Python 进阶——类(class)
简单创建类:class 类名(object): pass #object,即继承最原始的对象,每个类都是object的子类,pass表示完结,可写可不写
改写初始化函数:#双下划线+init+双下划线 为初始化函数名,以“self”为第一个固定参数,表示初始化时的实例,初始化可更新实例参数
class Animal(object): class Animal(object):
location = 'China' location = 'China'
__color = 'red' __color = 'red'
def __init__(self,变量1,变量2): def __init__(self, name, age):
self.变量1 = 变量1 self.name = name
self.变量2 =变量2 self.age = age
def get_color(self): def get_color(self):
return self.__color return self.__color
def get_name(self): def get_name(self):
return self.name return self.name
@classmethod @classmethod
def set_location(cls, location ): def set_location(cls, location ):
cls.location= location cls.location= location
实例属性:#类似public属性,每初始化一个实例,则都有该实例的专有的属性值,通过实例访问,dog.name
类属性:#类专有的属性,有且只有一个值,所有的实例共有的值,所有的实例的类属性都相等,可通过类名称进行访问,Animal.location
实例私有属性(以双下划线开头的属性#__pri):#类似private属性,无法直接通过实例或者类进行访问的属性,只有类自身函数可调用该私有属性,可以通过实例方法(不能用类方法获取)去获取的属性, __color,get_color(self)
实例方法:#类的方法,可通过实例进行引用,可获取类属性、实例属性、实例私有属性,get_color(self), get_name(self)
类方法:#属于类的方法,可直接通过类名称进行调用,类方法只能处理类属性。必须用@classmethod标识,set_location(cls, location)
实例调用:
dog = Animal('dog',10)
print(dog.name) #实例属性调用,输出——》 dog
print(dog.getName()) #实例方法调用输出——》 dog
print(Animal.location) #类属性调用输出——》China
print(dog.get_color()) #实例方法调用输出——》red
Animal.set_location('Amarica') #调用类方法,改变类属性
print(Animal.location) #类属性输出——》Amarica
继承:创建class类时,继承括号内函数
class Newanimal(父类名称):
def __init__(self,变量1,变量2,变量A):
super(父类名称,变量1,变量2) #初始化父类带过来的变量
self.变量A = 变量A
http://www.godelo.cn 香水香精