python - 继承输入类的所有事件变量

标签 python class

假设我有一个类 A

class A(object):
    def __init__(self, x, y)
        self.x = x
        self.y = y

然后我定义了一个 B 类,它由 A 初始化(而不是以 A 为基础)和其他参数

class B(object):
    def __init__(self, a):
        if isinstance(a, A):
            self.a = a

问题是,假设A定义了大量的变量,并在B中频繁引用,是否有可能使B 知道 A 中的那些变量,所以在 B 中我可以做

self.x 

而不是

self.a.x

?

我知道这种自动继承的变量有点危险,甚至可能具有破坏性,但输入许多额外的 self.a.x 看起来有点笨拙。可以选择暂时或在一小段代码中启用此继承应该很有用。

编辑

__dict__ 提出了基本上所有的东西,包括 methodsfunctions,可能只保留数值变量?

最佳答案

你可以这样写:

class B(object):
    def __getattr__(self, attr):
        if hasattr(self.a, attr):
            return getattr(self.a, attr)
        else:
            return object.__getattribute__(self, attr)

每当您访问 B 的属性时,它都会检查 a 是否具有该属性。如果是这样,它会返回那个。如果没有,它将在 B 本身中查找属性。

关于python - 继承输入类的所有事件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745454/

相关文章:

javascript - 如何在 HTML Canvas 中创建相同形状的多个实例?

python - 在 python 3.4.3 中生成对象

python - 通过 pandas 重新格式化我的 csv 文件(将一组值转换为列,将另一组值与相应的值匹配)

c++ - 指向 C++ 类元素的指针

php - 如何在静态方法中调用类的成员变量?

python - 导入错误 : No module named mpl_toolkits

php - 在类方法中调用函数?

python - 如何解析 Json 文件并搜索特定的关键字集?

python - 为什么我在参数调整 (cv) 上的平均测试分数低于保持测试集 (RandomForestClassifier)?

python - 在 Ubuntu 12.04 上使用 SQLAlchemy 查询时出现类型错误,但在 Windows 上则不然