Python成员方法分三类:实例方法(首参self,操作实例状态)、类方法(@classmethod+cls,操作类属性/工厂函数)、静态方法(@staticmethod,无绑定的工具函数)。
Python 中的成员方法主要指定义在类内部、用于操作实例或类本身的方法,它们根据第一个参数和装饰器不同,分为三种:实例方法、类方法和静态方法。区别核心在于调用方式、可访问的数据范围以及用途定位。
最常见的一类方法,第一个参数必须是 self,代表当前实例对象。它能自由访问和修改实例属性,也能调用其他实例方法或类属性。
obj.method()),不能直接用类名调用(Class.method() 会报错)self.x)、访问类变量(self.__class__.y 或 type(self).y)用 @classmethod 装饰,第一个参数是 cls,代表当前类(而非实例)。它无法访问实例属性,但可以操作类属性、创建新实例或作为替代构造函数。
Class.method() 或 obj.method()),实际接收的是类对象datetime.fromtimestamp() 就是类方法cls.count += 1),但不能使用 self.xxx
用 @staticmethod 装饰,不强制传入 self 或 cls。本质上是“寄居在类里的普通函数”,跟类或实例都无绑定关系。
Class.func() 或 obj.func())MyClass.value)选哪种方法,关键看这个功能是否需要依赖实例状态(选实例方法)、是否要统一操作类本身(选类方法)、或者只是借个命名空间放工具函数(选静态方法)。不复杂但容易忽略细节。