假设我有一个类 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__
提出了基本上所有的东西,包括 methods
和 functions
,可能只保留数值变量?
最佳答案
你可以这样写:
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/