如何在我能';不要使用自我Python
我有一个奇怪的问题。我有以下代码:如何在我能';不要使用自我Python,python,class,inheritance,python-3.x,Python,Class,Inheritance,Python 3.x,我有一个奇怪的问题。我有以下代码: 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?是为方法上下文设置的,并且仅真正用于su
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
?是为方法上下文设置的,并且仅真正用于super()
对于您希望使用self.\uuuu class\uuu
的方法:
return self.__class__()
或者更好地使用类型(self)
:
如果希望能够在类上调用该方法,则使用将引用传递给类对象,而不是保持未绑定状态:
@classmethod
def f(cls):
return cls()
classmethod
s总是绑定到它们被调用的类,因此对于A.f()
,那就是A
,对于B.f()
,你得到了B
。,我没有使用self.\uuu class\uuuu()
,因为我不能使用self
。我一直认为@classmethod
使用对象而不是类。我怎么能得到B而不是第二个A
-这是什么意思?打印文本中的B
?实例。我的意思是,b
成为b
的实例。
@classmethod
def f(cls):
return cls()