CodeWalk

Python 类方法、静态方法、实例方法的区别

作者:专业代码师 · 2026-05-30 12:55

Python 中 @classmethod@staticmethod 和普通实例方法有什么区别?各自的使用场景是什么?

回答

专业代码师

  • 实例方法:第一个参数 self,访问实例属性和方法
  • 类方法(@classmethod):第一个参数 cls,可访问类属性和类方法,常用于工厂方法
  • 静态方法(@staticmethod):无特殊参数,与普通函数类似,仅通过类名调用组织代码
class Date:
    def __init__(self, year, month, day):
        self.year = year

    @classmethod
    def from_string(cls, s):
        year, month, day = map(int, s.split('-'))
        return cls(year, month, day)  # 工厂方法

    @staticmethod
    def is_valid(s):
        return s.count('-') == 2