当运行具有多个源文件的python程序时,构造函数的行为与函数不同

时间:2013-05-15 00:33:20

标签: python

main file.py

from resources import *
alist[0].update()
print (blist)

resources.py

class a:
    def __init__(self):
        self.x=0
    def update(self):
        global blist
        blist=blist+[b()]
class b:
    def __init__(self):
        self.y=0
blist=[]
alist=[a()]

当调用alist [0] .update()时,该程序应该在blist中创建一个新的b类实例,但是在它运行print(blist)之后它只显示一个空列表。我也尝试了相同的代码,其中类a定义如下

class a:
    def __init__(self):
        self.x=0
        global blist
        blist=blist+[b()]
    def update(self):
        pass

并在列表b中成功创建了一个实例。我真的需要它用函数而不是构造函数创建另一个实例,我该怎么做?任何意见表示赞赏!

P.S。这只在运行多个源代码文件时发生。

1 个答案:

答案 0 :(得分:1)

blist=blist+[b()]重新定义blist。它不会修改原始对象,这是您在其他源文件中指向的blist

您应该.append改为原始列表:

blist.append(b())
相关问题