【发布时间】:2016-11-11 12:34:23
【问题描述】:
我想创建一个 Python 类,它表面上看起来是另一个类的子类,但实际上并没有继承它的属性。
例如,如果我的班级名为 B,我希望 isinstance(B(), A) 返回 True 以及 issubclass(B, A),但我不希望 B 具有为A. 这可能吗?
注意:我不控制A的实现。
我关心的原因:我正在使用的模块检查传递的对象是否是A 的子类。我想在B 中定义必要的属性,而不继承A 中定义的多余属性(我无法控制其实现),因为我使用__getattr__ 将一些属性调用传递给包装类,如果这些属性由 A 继承定义,__getattr__ 不会被调用。
【问题讨论】:
-
您可能想查看抽象基类。另外,你的目标是 python 2 还是 3?
-
以 Python 3 为目标。
-
顺便说一句。结果是XY problem。您应该避免专门针对您的单一想法来解决您的原始问题,而是提及您的原始问题。
-
@poke 是的,我自己也意识到了这一点。对不起????
标签: python class oop inheritance