我有两个python类:
class A:
def __init__(self, param1):
self.param1 = param1
class B:
def __init__(self, a):
self.a = a
现在我有一个B实例,需要访问param1,我可以只写b.a.param1
。但是目标是忽略'a'部分,因此请使用b.param1
访问此参数。我可以向B类添加属性,但是我正在寻找通用解决方案-当A类的变量很多时。可能吗?会是干净的解决方案吗?
答案 0 :(得分:1)
这不是最优雅的选择,可能不是一个好习惯,但是您可以使用a
和b
将getattr
的所有属性复制为setattr
的属性:
import inspect
class A:
def __init__(self, param1):
self.param1 = param1
class B:
def __init__(self, a):
self.a = a
variables = [i for i in dir(a) if not inspect.ismethod(i) and i[:2] != '__']
for var in variables:
setattr(self, var, getattr(a, var))
通过这种方式,您可以直接访问a
的属性:
a = A(1)
b = B(a)
b.param1
这将返回
1