def _get_abc_interface_props_and_funcs(cls):
properties = set()
function_sigs = {}
if not hasattr(cls, '__abstractmethods__'):
return properties, function_sigs
for name in cls.__abstractmethods__:
if _builtin_attrs(name):
pass # shortcut
value = getattr(cls, name)
if isinstance(value, (staticmethod, classmethod, types.MethodType)):
func = six.get_method_function(value)
function_sigs[name] = _get_function_signature(func)
elif isinstance(value, types.FunctionType):
function_sigs[name] = _get_function_signature(value)
elif isinstance(value, property):
properties.add(name)
return properties, function_sigs
评论列表
文章目录