python的类有几种方法

Python类方法分三类:实例方法以self为首参、仅实例可调;类方法用@classmethod装饰、以cls为首参、类或实例均可调;静态方法用@staticmethod装饰、无self/cls、纯工具函数。

Python 类中的方法主要分为三类:实例方法、类方法和静态方法。它们在定义方式、调用主体和用途上各有不同,理解区别对合理设计类结构很关键。

实例方法(Instance Methods)

最常用的方法类型,第一个参数必须是 self,代表当前实例对象。它能访问和修改实例属性,也能调用其他实例方法或类属性。

  • 定义时以 def 开头,首参数固定为 self
  • 只能通过实例调用(如 obj.method()),不能直接用类名调用
  • 可自由读写 self.xxx,也可通过 self.__class__.xxx 访问类属性

类方法(Class Methods)

@classmethod 装饰,第一个参数是 cls,代表当前类本身。适合操作类属性、实现替代构造器或需要影响整个类行为的逻辑。

  • 定义时加 @classmethod,首参数为 cls
  • 可通过类名或实例调用(Class.method()obj.method()
  • 常用于工厂方法,比如 datetime.fromtimestamp() 就是类方法

静态方法(Static Methods)

@staticmethod 装饰,不接收 selfcls 参数。本质上是“寄居”在类里的普通函数,与类或实例无数据绑定。

  • 定义时加 @staticmethod,参数完全自定义
  • 调用方式灵活,类名或实例均可(Class.func()obj.func()
  • 适合放与类逻辑相关但无需访问类/实例状态的工具函数,比如类型校验、格式转换

不复杂但容易忽略:方法类型由装饰器和参数约定共同决定,Python 不强制检查,写错参数名(如把 cls 写成 self)也不会报错,但运行时行为会异常。