当从派生类__subclashook__
实现时,无法从issubclass返回False
。我修改从代码: python subclasscheck & subclasshook 我只加“(大小)”这两个类定义:python abc subclasshook在派生类时不起作用
from abc import ABCMeta
class Sized(metaclass=ABCMeta):
@classmethod
def __subclasshook__(cls, C):
if cls is Sized:
if any("__len__" in B.__dict__ for B in C.__mro__):
return True
return NotImplemented
class A(Sized):
pass
class B(Sized):
def __len__(self):
return 0
print(issubclass(A, Sized)) # True - should be False
print(issubclass(B, Sized)) # True
有没有办法在这种情况下返回False
?或者,也许我做错了什么?
,当然我发现了开头的代码片段(在ABC): 'OK = CLS .__ subclasshook __(子类)' – PiotrB
原谅我,如果我失去了一些东西,但你能不能只替换'而归NotImplemented' '返回False'?你试图坚持的PEP8中有什么? –
@叶夫:谢谢,这太明显了。但是为什么所有的例子只返回'True'或'NotImplemented'。 – PiotrB