[英]Getting a particular subset of methods from a Python class
我已经阅读了Stack Overflow中回答这个问题的其他帖子,但我对一个特定的方法子集感兴趣。
假设你有一个n
大于1的Cn
类,以及C0
, C1
,..., Cn-1
类,这样,对于1和n-1
之间的每个i
,类Ci+1
继承自Ci
类。
我的问题是: 对于任何高于1的i
,我如何获得属于Ci
但不属于Ci-1
的方法列表 ?
您可以在类的__dict__
属性中找到类本身定义的所有名称; 你可以使用vars()
函数更简洁地列出那些:
from types import FunctionType
for name, object in vars(Ci).items():
if isinstance(object, FunctionType):
print(name, 'is defined on Ci directly and not inherited')
您可能需要更改功能测试; 我在这里假设您只需要普通的函数对象(在实例上查找时绑定到方法中),但您可能需要测试类或静态方法或其他可调用对象,具体取决于您的用例。
这将包括已重新定义的名称; 所以这些存在于父太多 ,但Ci
提供了新的实现,掩盖了父母的。
如果必须找到唯一属于Ci
所有名称且没有父项提供,则必须对基础上存在的名称进行过滤:
parent_defined = set().union(*(dir(b) for b in Ci.__bases__))
for name, object in vars(Ci).items():
if name not in parent_defined and isinstance(object, FunctionType):
print(name, 'is defined on Ci directly and not inherited')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.