- 三种方法都在类中定义,调用的方法不一样
- 实例方法:由对象(实例)调用,至少有一个self参数(与实例绑定);执行该方法时,将对象赋值给self
- 类方法:由类或实例调用,至少有一个cls参数(与类绑定);执行该方法时,将类赋值给cls
- 静态方法:类中定义的普通函数,与其他普通函数相同,即可由实例调用,也可由类调用
示例
class A(object): def __init__(self, name): self.name = name # 定义类属性 age = 18 # 定义类属性 def run(self): # 定义实例方法 print("This is a instance method.") print(self.name) # 访问实例属性 print(A.age) # 访问类属性 print(self.age) # 访问类属性(实例化时继承了类属性) @classmethod # 定义类方法 def say(cls): print("This is a class method.") print(A.age) # 访问类属性 @staticmethod # 定义静态方法 def walk(): print("This is a static method.") print(A.age) # 访问类属性 a = A("name") a.run() a.say() A.say() a.walk() A.walk()
执行结果:
This is a instance method.
name
18
18
This is a class method.
18
This is a class method.
18
This is a static method.
18
This is a static method.
18