gpt4 book ai didi

python - 当我不能使用 self 时如何上课 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:07 24 4
gpt4 key购买 nike

我有一个奇怪的问题。我有以下代码:

class A:
def f():
return __class__()

class B(A):
pass
a = A.f()
b = B.f()
print(a, b)

输出是这样的:

<__main__.A object at 0x01AF2630> <__main__.A object at 0x01B09B70>

那么我怎样才能得到B而不是第二个A呢?

最佳答案

magic __class__ closure方法上下文设置,并且仅供super()使用。

对于您想使用 self.__class__ 的方法:

return self.__class__()

或者更好的是,使用type(self):

return type(self)()

如果您希望能够调用类的方法,请使用 classmethod decorator传递对类对象的引用,而不是保持未绑定(bind)状态:

@classmethod
def f(cls):
return cls()

classmethod 始终绑定(bind)到调用它们的类,因此对于 A.f() 来说,它是 A,对于 B.f() 你得到了 B

关于python - 当我不能使用 self 时如何上课 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716828/

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