def generate_immutable_abc(supercls, mutable_subclass):
class ABCImmutableMeta(ABCMeta):
def __subclasscheck__(cls, subclass):
if not issubclass(subclass, supercls):
return False
return not issubclass(subclass, mutable_subclass)
class ABCImmutable(with_metaclass(ABCImmutableMeta, object)):
pass
# dirty hack to assert issubclass(ABCImmutable, supercls).
supercls._abc_cache.add(ABCImmutable)
return ABCImmutable
评论列表
文章目录