当我不能使用自己的Python时如何获得课程
发布时间:2020-12-20 11:42:19 所属栏目:Python 来源:网络整理
导读:我有一个奇怪的问题.我有以下代码: class A: def f(): return __class__()class B(A): passa = A.f()b = B.f()print(a,b) 输出是这样的: __main__.A object at 0x01AF2630 __main__.A object at 0x01B09B70 那我怎么能得到B而不是第二个? 解决方法 magic
我有一个奇怪的问题.我有以下代码:
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而不是第二个? 解决方法
magic
__class__ closure是为方法上下文设置的,仅供super()使用.
对于你想要使用self .__ class__的方法: return self.__class__() 或者更好的是,使用类型(自我): return type(self)() 如果您希望能够在类上调用该方法,那么使用 @classmethod def f(cls): return cls() classmethods总是绑定到它们被调用的类,所以对于A.f(),它是A,对于B.f()你会被交给B. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |