深入研究类和实例方法的细微差别: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