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() # 输出: 静态方法无法访问类或实例属性
发表评论