python 面向对象(三)静态字段 静态方法 类方法
1.静态字段
class amimal: #静态字段,属于类 origin = '生物' def __init__(self,name): self.name = name dog = amimal('dog') print(amimal.__dict__) # 静态字段在里面 print(dog.__dict__) # {'name': 'dog'} print(dog.origin) # 生物 通过对象可以访问到静态字段 dog.origin = 'pig' print(dog.origin) # pig 通过对象修改后,该对象的静态属性被修改 print(amimal.origin) #生物 类中没有改变
静态字段最好通过类去访问,类中的普通方法通过对象去访问,对象中的普通字段通过对象去访问
2.静态方法
class amimal: #静态字段,属于类,通过类访问 origin = '生物' def __init__(self,name): #局部变量,在本函数内使用 test = 'aaa' #普通字段,属于对象,通过对象访问 self.name = name #普通方法,属于类,通过对象访问 def wang(self): print('汪汪汪') #静态方法,属于类,通过类访问 @staticmethod def eat(): #无self参数 print('吃') dog = amimal('狗') print(amimal.origin) #静态字段,类访问 amimal.eat() #静态方法,类访问 print(dog.name) #普通字段,对象访问 dog.wang() #普通访问,对象访问
虽然类和对象都可以访问静态方法,静态字段,普通字段,普通方法,但是其他语言中有严格要求, 所有为了以后方便学其他语言,请严格按照上述的访问方式
3.类方法
class amimal: #静态字段,属于类,通过类访问 origin = '生物' def __init__(self,name): #局部变量,在本函数内使用 test = 'aaa' #普通字段,属于对象,通过对象访问 self.name = name #普通方法,属于类,通过对象访问 def wang(self): print('汪汪汪') #静态方法,属于类,通过类访问 @staticmethod def eat(): #无self参数 ,可以有多个参数 print('吃') #类方法,属于类,通过类访问 @classmethod def drink(cls): #比静态方法多一个cls 参数,将类自动传给cls print('喝') dog = amimal('狗') print(amimal.origin) #静态字段,类访问 amimal.eat() #静态方法,类访问 amimal.drink() # 类方法,类访问 print(dog.name) #普通字段,对象访问 dog.wang() #普通访问,对象访问
类方法必须有一个cls参数 ,是种特殊的静态方法,将类自动传给cls参数。
静态方法可以没有参数,也可以有多个参数。
普通方法必须有一个self参数,将对象自动传给self参数
总结:通过类访问:静态字段,静态方法,类方法(特殊的静态方法)
通过对象访问:普通字段,普通方法

浙公网安备 33010602011771号