1. 类方法 vs 实例方法 vs 静态方法
理解这三种方法的区别至关重要:
| 方法类型 | 装饰器 | 第一个参数 | 访问类属性 | 访问实例属性 |
|---|---|---|---|---|
| 实例方法 | 无 | self |
是 | 是 |
| 类方法 | @classmethod |
cls |
是 | 否 |
| 静态方法 | @staticmethod |
无 | 否 | 否 |
代码示例:
class MyClass:
class_attr = "类属性"
def __init__(self, value):
self.instance_attr = value
def instance_method(self):
print(f"实例方法访问: {self.instance_attr}, {self.class_attr}")
@classmethod
def class_method(cls):
print(f"类方法访问: {cls.class_attr}") # 无法访问实例属性
@staticmethod
def static_method():
print("静态方法无法访问类或实例属性")
# 使用示例
obj = MyClass("实例值")
obj.instance_method() # 输出: 实例方法访问: 实例值, 类属性
MyClass.class_method() # 输出: 类方法访问: 类属性
MyClass.static_method() # 输出: 静态方法无法访问类或实例属性
发表评论