通过类

时间:2019-12-04 08:41:57

标签: python

我有两个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类的变量很多时。可能吗?会是干净的解决方案吗?

1 个答案:

答案 0 :(得分:1)

这不是最优雅的选择,可能不是一个好习惯,但是您可以使用abgetattr的所有属性复制为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

相关问题