• 周四. 11 月 21st, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

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

King Wang

3 月 7, 2023

主文件.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中创建了一个实例。我真的需要它来用函数而不是构造函数创建另一个实例,我该怎么做?如有任何意见,我们将不胜感激

另外,只有在运行多个源代码文件时才会发生这种情况

Tags:

文件实例frompyself列表initdefupdateglobalclassresourcesprintalistblist1条回答网友

1楼 ·

发布于 2023-03-07 00:10:57

blist=blist+[b()]重新定义了blist。它不会修改原始对象,这就是另一个源文件中的blist所指向的对象

您应该.append到原始列表:

blist.append(b())

《当用多个源文件运行python程序时,构造函数的行为与函数不同》有25个想法
  1. 918kiss

    […]here are some hyperlinks to web sites that we link to for the reason that we feel they’re really worth visiting[…]

  2. itme.xyz

    […]that will be the finish of this post. Right here you’ll come across some web sites that we assume you’ll appreciate, just click the hyperlinks over[…]

  3. itme.xyz

    […]always a large fan of linking to bloggers that I really like but really don’t get a whole lot of link appreciate from[…]

发表回复