繁体   English   中英

从Python类获取特定的方法子集

[英]Getting a particular subset of methods from a Python class

我已经阅读了Stack Overflow中回答这个问题的其他帖子,但我对一个特定的方法子集感兴趣。

假设你有一个n大于1的Cn类,以及C0C1 ,..., 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM