形式上:
1. 实例方法隐含的参数为类实例 self
2. 类方法隐含的参数为类本身 cls
3. 静态方法无隐含参数
注意: 以下讨论的属性、方法均指公开的类型,非私有的。
实例方法:
能读取、修改实例属性
能调用实例方法
能读取类属性
能调用类方法
能调用类静态方法(要求在类定义中,静态方法上一行加入:@staticmethod)
调用方式:对象名.方法名(参数列表) ,编译器自动传递self参数
类方法:
不能读取、修改实例属性
不能调用实例方法(但是,把对象名放到括号的参数位置,也可以调用)
能读取、修改类属性
能调用类方法
能调用类静态方法
调用方式:类名.类方法名(参数列表) ,编译器自动传递cls参数
静态方法:
不能读取、修改实例属性
不能调用实例方法
能读取、修改类属性
能调用类方法
能调用类静态方法
调用方式: 类名.静态方法名(参数列表),不需要cls参数
类方法和静态方法,功能非常相近,可以相互替代
从规范的角度来说,请按照:
实例方法操作对象,
类方法操作类,
静态方法 是和 类无关的通用方法。
1)在class内定义的普通方法,因为它是要面向实例化对象的一个实例方法。
2)在class内定义的类方法,它第一个参数必须是cls,并与class本身是绑定关系,可以被实例对象调用。
3)在class内定义的静态方法,它与任何对象都没有联系,等同于是在class外定义的function,它属于函数。

