关于__subclasscheck__
(和subclasshook__
)的调用顺序,我找不到太多信息。比如说,我的子类UserString
(它继承元类ABC
):
class MyUserString(UserString):
@classmethod
def __subclasshook__(cls, C):
print("I was called!")
return True
print(isinstance([], UserString))
我得到了输出:
I was called!
True
用PyCharm追踪这次处决我看到了
ABCMeta
的__instancecheck__
首先被调用李>ABCMeta
的__subclasscheck__
__subclasshook__
并返回NotImplemented
ABCMeta
的__subclasscheck__
被再次调用,但这次,它的cls
参数是MyUserString
,而不是(2)中的UserString
MyUserString
的__subclasshook__
最终被调用李>有人能解释一下步骤2-5吗?为什么控制权从__instancecheck__
转移到__subclasscheck__
?为什么要调用Reversible
的__subclasshook__
?为什么在(4)中对MyUserString
调用__subclasscheck__
?如果我定义了另一个子类UserString
的类,比如MyUserString2
,那么在(4)中,哪一个将首先用作cls
,为什么
目前没有回答
相关问题 更多 >
编程相关推荐