1.静态字段

class amimal:
    #静态字段,属于类
    origin = '生物'
    def __init__(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'
        #普通字段,属于对象,通过对象访问
         = name

    #普通方法,属于类,通过对象访问
    def wang(self):
        print('汪汪汪')

    #静态方法,属于类,通过类访问
    @staticmethod
    def eat():  #无self参数
        print('吃')

dog = amimal('狗')
print(amimal.origin) #静态字段,类访问
amimal.eat() #静态方法,类访问
print()  #普通字段,对象访问
dog.wang() #普通访问,对象访问

虽然类和对象都可以访问静态方法,静态字段,普通字段,普通方法,但是其他语言中有严格要求, 所有为了以后方便学其他语言,请严格按照上述的访问方式

3.类方法

class amimal:
    #静态字段,属于类,通过类访问
    origin = '生物'
    def __init__(self,name):
        #局部变量,在本函数内使用
        test = 'aaa'
        #普通字段,属于对象,通过对象访问
         = 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.wang() #普通访问,对象访问

类方法必须有一个cls参数 ,是种特殊的静态方法,将类自动传给cls参数。

静态方法可以没有参数,也可以有多个参数。

普通方法必须有一个self参数,将对象自动传给self参数

总结:通过类访问:静态字段,静态方法,类方法(特殊的静态方法)

     通过对象访问:普通字段,普通方法