當從派生類__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