wta*_*yeb 5 python methods subclass python-2.7
有没有一种干净的方法来获取仅在父类中未定义的子类中定义的方法?
class Parent(object):
def method_of_parent(self):
pass
class SubClass(Parent):
def method_of_subclass(self):
pass
# desired:
>>> print(get_subclass_methods(SubClass))
['method_of_subclass',]
Run Code Online (Sandbox Code Playgroud)
我认为有很多极端情况,但这是解决方案之一。
import inspect
class Parent(object):
def method_of_parent(self):
pass
class SubClass(Parent):
def method_of_subclass(self):
pass
def get_subclass_methods(child_cls):
parents = inspect.getmro(child_cls)[1:]
parents_methods = set()
for parent in parents:
members = inspect.getmembers(parent, predicate=inspect.ismethod)
parents_methods.update(members)
child_methods = set(inspect.getmembers(child_cls, predicate=inspect.ismethod))
child_only_methods = child_methods - parents_methods
return [m[0] for m in child_only_methods]
print(get_subclass_methods(SubClass))
Run Code Online (Sandbox Code Playgroud)
结果
['method_of_subclass']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |