0

主文件.py

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

资源.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 中创建了一个实例。我真的需要它来使用函数而不是构造函数创建另一个实例,我该怎么做?任何意见表示赞赏!

PS 这仅在运行多个源代码文件时发生。

4

1 回答 1

1

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

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

blist.append(b())
于 2013-05-15T00:39:39.750 回答