”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Python 中的实例方法与类方法:什么时候应该使用“self”和“cls”?

Python 中的实例方法与类方法:什么时候应该使用“self”和“cls”?

发布于2024-11-09
浏览:234

  Instance vs. Class Methods in Python: When Should You Use \

深入研究类和实例方法的细微差别:Beyond Self 与 Cls

Python 增强提案 (PEP) 8 建议使用“self”作为实例方法中的第一个参数,“cls”作为类方法中的第一个参数。这种区别源于这些方法在处理实例和类时所扮演的不同角色。

实例方法:自我优势

实例方法在实例的实例上调用班级。它们通常与特定实例的特定属性和行为交互。这些方法的第一个参数是 self,它代表调用该方法的实例。

例如,下面的类定义了一个“引入”实例方法:

class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))

当我们创建 Inst 类的实例并调用其“introduce”方法时,实例本身作为 self 参数传递,允许我们访问它的属性(在本例中为“name”属性)。

类方法:拥抱另一方面,Cls

类方法对类本身而不是单个实例进行操作。它们允许我们修改或检查类结构或行为。这些方法的第一个参数是 cls,它表示调用该方法的类。

以下示例说明了类方法:

class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)

此方法不需要实例,因为它不与特定对象属性交互。相反,它对类本身进行操作,提供有关其结构的信息。

类方法在从父类继承时特别有用,因为它们允许子类修改或扩展父类的行为。例如,以下子类重写 Cls 类的“introduce”方法:

class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am 

通过使用“cls”作为第一个参数,可以直接在子类上调用“introduce”方法,允许其定义自己的行为,同时仍然访问从父类继承的属性。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3