Python--面向对象编程基础知识

xiaoxiao2021-02-27  448

 在面向对象程序设计中,程序员可以创建任何新的类型,这些类型描述了每个对象的属性和方法。创建类时,用变量表示属性称为“成员变量”或“成员属性‘’,用函数表示方法称为“成员函数”或“成员方法”,成员属性和成员方法都称为类的成员。


实例属性和类属性

属性(变量)有两种:

实例属性(Java中的“实例变量”)类属性 (Java中的“静态变量”) # -*- coding:UTF-8 -*- class Car: price = 1000 #定义类属性(静态变量) def __init__(self,c): #构造函数 self.color = c #定义实例属性(实例变量) #主程序 car1 = Car("Red") car2 = Car("Blue") print car1.color, Car.price Car.price = 22000 #修改类属性(静态变量) Car.name = 'YLF' #增加一个类属性(静态变量) car1.color = "Yello" #修改实例属性(实例变量) print car1.color, Car.price, Car.name print car2.color, Car.price, Car.name

输出

Red 1000 Yello 22000 YLF Blue 22000 YLF

居然类实例化后还可以增加一个新的属性(变量)!!!


 如果属性名一“__”(双下划线)开头则是私有属性(私有变量),否则就是公有属性(公有变量)。私有属性在类外不能直接访问。Python提供了访问私有属性的方式,可用于程序的测试和调试,访问方法为:

对象名._类名+私有成员名 # -*- coding:UTF-8 -*- class Fruit: def __init__(self): #构造函数 self.__color = 'Red' #私有属性(私有变量)初始化 self.price = 1 #公有属性(公有变量)初始化 #主程序 apple = Fruit() apple.price = 2 print apple.price, apple._Fruit__color #访问公用成员、私有成员 apple._Fruit__color = 'Bule' #修改私有成员 print apple.price, apple._Fruit__color peach = Fruit() #再实例化一个对象 print peach.price, peach._Fruit__color #访问公用成员、私有成员

类的方法

类有3种方法:

公有方法私有方法静态方法

 公有方法、私有方法都属于对象,每个对象都有自己的公有方法和私有方法;公有方法通过对象名调用,私有方法不能通过对象名调用,只能在属于对象的方法通过self调用;静态方法属于类,静态方法只能通过类名调用,静态方法不能访问属于对象的成员,只能访问属于类的成员。原因很简单,因为通过类名调用静态方法时,并没有对象存在。

# -*- coding:UTF-8 -*- class Fruit: price = 0 #静态属性(静态变量) def __init__(self): #构造函数 self.__color = 'Red' #私有属性(私有变量)初始化 self.__city = 'Kunming' #私有属性(私有变量)初始化 def __outputColor(self): #定义私有方法 print (self.__color) #访问私有属性 def __outputCity(self): #定义私有方法 print (self.__city) #访问私有属性 def output(self): #定义公有方法 self.__outputColor() #调用私有方法 self.__outputCity() #调用私有方法 @staticmethod #静态方法装饰器 def getPrice(): #定义静态方法 return Fruit.price @staticmethod #静态方法装饰器 def setPrice(price): #定义静态方法 Fruit.price = price #主程序 apple = Fruit() apple.output() print (Fruit.getPrice()) Fruit.setPrice(9) print (Fruit.getPrice())

输出

Red Kunming 0 9

动态增加公用方法

# -*- coding:UTF-8 -*- class Demo: #定义一个类 def hello(self): #定义一个公用方法 print ("hello world!") #主程序 Instance1 = Demo() #实例化一个对象 def hello2(self): #定义一个新函数(方法) print ("hello again!") Demo.hello2 = hello2 #为该类增加公有方法hello2 Instance1.hello() #调用对象的hello方法 Instance1.hello2() #调用对象的hello2方法 @staticmethod def hello3(): #定义一个函数(静态方法) print ("hello once more!") Demo.hello3 = hello3 #为该类增加静态方法hello3 Demo.hello3()

输出

hello world! hello again! hello once more!
转载请注明原文地址: https://www.6miu.com/read-1086.html

最新回复(0)