面向对象之self classmethod staticmethod
class Foo: """静态字段 调用方式:类名.静态字段 在当前类的任意位置可以被调用, 但是注意了 如果是静态的方法/类方法,只能是类名.静态字段 如果是普通方法,可以用self.静态字段, 或者类名.静态字段 """ name1 = "gendan" age = 100000 def __init__(self, name): """构造方法""" print('这是一个构造方法,在对象创建时就自动加载进内存,而且只有一次') self.name = name #声明一个普通字段,调用方式只能是对象.属性来访问,每创建一个对象就会在内存中开一个空间 self.age = "10" print(Foo.age) def gen_func(self): """ 定义普通方法,至少有一个self参数 """ print(self.name,"普通方法ord_func") print('普通方法') # self.age = 999 # print("----",self.age) @classmethod #--->声明紧接它以def开头定义的方法,并且此方法里面后面至少第一个参数是cls def class_func(cls): #调用方式是类名.方法() Foo.class_func() """ 定义类方法,至少有一个cls参数 """ print ( '类方法') # Foo.age="0101 类方式更改静态字段" print(Foo.age) #类方法里不允许用self方式来访问(不难想象self是一个句柄,只针对对象 @staticmethod #--->声明紧接它以def开头定义的方法叫静态方法 def static_func(): """ 定义静态方法 ,无默认参数""" print('静态方法') #静态方法里同样不允许self方式访问(理由同上) #创建类对象 f =Foo("") f.name = "diger" Foo.age = 99 #允许类方式修改静态字段 f.gen_func() Foo.class_func() #0101 类方式更改静态字段 print(f.name,"直接外部来调用") #diger 直接外部来调用