How to get class when I can't use self - Python
我有个奇怪的问题。我有以下代码:
1 2 3 4 5 6 7 8 9 | class A: def f(): return __class__() class B(A): pass a = A.f() b = B.f() print(a, b) |
输出是这样的:
1 | <__main__.A object at 0x01AF2630> <__main__.A object at 0x01B09B70> |
那么我怎样才能得到
神奇的
对于要使用
1 | return self.__class__() |
或者更好的是,使用
1 | return type(self)() |
如果希望能够对类调用该方法,则使用
1 2 3 | @classmethod def f(cls): return cls() |