Python 类方法、静态方法、实例方法的区别
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