def _type_is_pure_interface(cls):
""" Return True if cls is a pure interface or an empty ABC class"""
if cls is object:
return False
if hasattr(cls, '_pi'):
return cls._pi.type_is_pure_interface
if issubclass(type(cls), abc.ABCMeta):
for attr, value in six.iteritems(cls.__dict__):
if _builtin_attrs(attr):
continue
if callable(value):
if not _is_empty_function(value):
return False
elif isinstance(value, property):
for func in (value.fget, value.fset, value.fdel):
if func is not None and not _is_empty_function(func):
return False
return True
return False
评论列表
文章目录