gpt4 book ai didi

python - Python中类方法中调用实例方法

转载 作者:行者123 更新时间:2023-12-01 00:55:19 28 4
gpt4 key购买 nike

我正在为公共(public)库设计一个类。

此类方法按如下顺序调用。

调用顺序为“类方法”->“实例方法”->“实例方法”

我不知道为什么最后一个实例方法需要 self 参数..

正如我们所知,通常实例方法不需要 self 方法。

我错过了什么?

class A:
@classmethod
def first(cls):
print('cls method')
cls.second(cls)

def second(self):
print('inst method 1')
self.third(self) # Question! Why this method need [self] parameter?

def third(self):
print('inst method 2')

A.first()

最佳答案

这是因为您调用第二个的方式。

假设你有这样一个类:

class A:

def do_thing(self):
pass

以下内容是等效的:

a = A()
a.do_thing()

A.do_thing(a)

换句话来说,当我们调用实例的方法时,与查找类对象的函数属性并以该实例作为第一个参数来调用它是一样的。。 p>

现在,请注意,当您调用 second 时,您将 cls 传递给它。这是类对象,而不是实例,这意味着您正在执行类似A.do_thing 的操作。因此,为了让它知道您要在哪个实例上调用third,您需要传入self

关于python - Python中类方法中调用实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56284698/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com