实例方法、类方法和静态方法区别
class A: # 实例方法: def f1(self): return 1 # 类方法: @classmethod def f2(cls): return 2 # 静态方法 @staticmethod def f3(): return 3 a = A() a.f1() # => 1 A.f1(a) # => 1 a.f2() # => 2 A.f2() # => 2 a.f3() # => 3 A.f3() # => 3
- 实例方法(也叫成员方法,用于描述对象的固有行为):默认将当前实例对象传递为第一个参数
- 类方法(类方法在定义时,方法在上面必须添加@classmethod):默认将当前类传递为第一个参数
- 静态方法(静态方法在定义时,方法在上面必须添加@staticmethod): 没有默认的第一个参数
实例方法调用格式:
对象名.方法名()
类方法调用格式:
类名.方法名(参数) 推荐使用方法
对象名.方法名(实参)不推荐使用
注意:
(1)类方法定义在勒种,不属于某个对象的具体行为,可以被所有对象共同使用的行为
(2)类方法中不允许使用实例变量和实例方法,实例方法中允许使用类变量和类方法,推荐使用类名调用
(3)实例方法中允许使用类变量和类方法
静态方法调用格式:
类名.方法名(实参) 推荐使用
对象名.方法名(实参)不推荐使用