0

我正在使用一个定义几个类(A 和 B)的包。我想扩展我的 A 类main.py以包含var_d. 我尝试了以下方法:

文件:my_package.py

class A:
    def __init__(self):
        self.var_a = 'var_a'

class B:
    def __init__(self):
        self.var_b = A()
        self.var_c = A()

文件:main.py

from my_package import *

a = B()
a.var_b.var_d = 'extending class A to have this new var'

这行不通。什么是替代解决方案?

4

2 回答 2

0

你必须使用“setattr”

class A:
    def __init__(self):
        self.var_a = 'var_a'

class B:
    def __init__(self):
        self.var_b = A()
        self.var_c = A()
a = B()
setattr(a.var_b, 'var_d', 1)

导致

print(a.var_b.var_d)
>> 1
于 2020-07-14T09:42:34.727 回答
0

在您class A的 中,self.var_a未分配值。python 中的变量自动存在于分配它们的第一个作用域中。在您当前的代码中,self.var_a未分配。self.var_a = ''例如,如果您这样做,它应该可以工作。

更新:我可能会对您的要求感到困惑。您的错误代码抱怨“var_a”,这就是我的答案。

于 2020-07-14T09:42:06.360 回答