【入门】Python类方法有几种?常用的有哪种?怎么用呢?

 实例方法 (Instance Method)

最常用,必须通过类的实例调用,第一个参数是 self(指向实例本身)。

class MyClass:
    def instance_method(self, arg1, arg2):
        print(f"实例方法被调用,self={self}, args={arg1}, {arg2}")

# 使用
obj = MyClass()
obj.instance_method("参数1", "参数2")  # 自动传递 self

特点:

  • 可以访问和修改实例属性 (self.xxx)
  • 可以访问类属性 (self.__class__.xxx)

2. 类方法 (Class Method)

用 @classmethod 装饰器定义,第一个参数是 cls(指向类本身),无需创建实例即可调用。

python
 
class MyClass:
    class_var = "类变量"

    @classmethod
    def class_method(cls, arg1):
        print(f"类方法被调用,cls={cls}, 类变量={cls.class_var}, arg1={arg1}")

# 使用
MyClass.class_method("参数1")  # 无需实例化
obj = MyClass()
obj.class_method("参数1")     # 也可以通过实例调用

常用场景:

  • 工厂模式(创建类的不同实例)
  • 操作类变量(不依赖实例状态)

3. 静态方法 (Static Method)

用 @staticmethod 装饰器定义,无 self 或 cls 参数,类似于普通函数,但属于类的命名空间。

class MyClass:
    @staticmethod
    def static_method(arg1, arg2):
        print(f"静态方法被调用,args={arg1}, {arg2}")

# 使用
MyClass.static_method("参数1", "参数2")  # 无需实例化
obj = MyClass()
obj.static_method("参数1", "参数2")     # 也可以通过实例调用

常用场景:

  • 工具函数(与类相关但不需要访问实例或类状态)
  • 代码组织(将逻辑归类到类中)

对比总结

最常用的方法

  1. 实例方法(90%场景):处理实例-specific 的逻辑。
  2. 类方法(5%场景):工厂方法或操作类变量。
  3. 静态方法(5%场景):工具函数。

如何选择?

  • 需要访问实例属性? → 实例方法
  • 需要访问类属性但不依赖实例? → 类方法
  • 只是逻辑上属于类,无需访问类或实例? → 静态方法

示例场景:

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    # 实例方法
    def describe(self):
        print(f"披萨配料: {self.ingredients}")

    # 类方法(工厂模式)
    @classmethod
    def margherita(cls):
        return cls(["番茄", "芝士"])

    # 静态方法
    @staticmethod
    def calculate_area(radius):
        return 3.14 * radius ** 2

# 使用
p1 = Pizza.margherita()  # 类方法创建实例
p1.describe()            # 实例方法
area = Pizza.calculate_area(10)  # 静态方法
 
posted @ 2025-03-27 17:29  测试员阿侠  阅读(27)  评论(0)    收藏  举报