我有两个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类的变量很多时。可能吗?会是干净的解决方案吗?
这不是最优雅的选择,并且可能是一个坏习惯,但是您可以将所有属性复制a
为b
usinggetattr
和属性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个
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句