变量:
实例变量(字段): class Foo: def __init__(self,name,age): self.__name = name #私有实例变量,只能内部调用,外部不能调用,子类不能调用 self.age = age #公有实例变量,都可以调用 def func(self): pass类变量(静态字段): class Foo: __race = ‘人类‘ #私有静态字段,只能内部调用,外部不能调用,子类不能调用 country = ‘中国‘ #公有静态字段 def __init__(self): pass 方法:
实例方法: class Foo: def __init__(self,name): self.name = name def func(self): #使用对象封装的变量,至少有一个参数self print(self.name) obj = Foo(‘小明‘) obj.func() 静态方法: class Foo: def __init__(self,name): self.name = name @staticmethod def func(): #不使用对象封装的变量,左上写@staticmethod,可以没有参数self,也可以有多个参数,尽量使用类名.方法名()调用 print(‘哈哈哈) obj = Foo(‘小明‘) Foo.func() 类方法: class Foo: def __init__(self,name): self.name = name @classmethod def func(cls): #方法上方写@classmethod,至少有一个参数cls,在调用的时候cls会自动传入当前类,尽量使用类名.方法名()调用 print(666) obj = Foo(‘xiaoming‘) Foo.func() 静态方法跟类方法的区别: 静态方法: 方法上方写@staticmethod 方法参数可有可无 无需调用对象中已经封装的值的时候,可以使用静态方法 类方法: 方法上方写@classmethod 至少有一个参数 cls,也可以有多个参数,cls会默认传值,传进去的是当前类 如果在方法中会使用到当前类,那么就可以使用类方法 属性:
class Foo: def __init__(self,name): pass @property def func(self): #方法上方写@property,方法参数只有一个self,无需加(),直接对象.方法就可以了 return 10 #对于简单的方法,当无需传参,且有返回值的时候,可以使用@property obj.Foo()print(obj.func)
原文地址:https://www.cnblogs.com/lianghui-lianghui/p/9555096.html
时间: 2024-11-05 12:24:35