gpt4 book ai didi

python - python中的对象破坏

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:56 26 4
gpt4 key购买 nike

我对 python 比较陌生。让我用一个例子来表达我的疑问:

我创建了名为“person”的类对象

class person:
name = ""
age = ""
phones = []
def add_phone(self, number):
self.phones.append(number)

让我们准备一些数据以备后用:

names = ["jhon", "tony", "mike", "peter"]
ages = [34, 36, 23, 75]
phones = [7676, 7677, 7678, 7679]

让我们进入一个for循环:

for i in range(0,4):
new_person = person()

据我了解,每次执行前一行时,都会创建一个新对象 person 并称为 new_person,并且应该销毁上一次迭代中变量 new_person 中的任何对象。然而事实并非如此:

    new_person.name = names[i]
new_person.age = ages[i]
new_person.add_phone(phones[i])

print "i= " + str(i)
print "name= "+ new_person.name
print "age= "+ str(new_person.age)
print "phones:"
print new_person.phones

new_person.phones 包含我们在之前的迭代中添加的电话。有人看到我错过了什么吗?这是否意味着对象类“person”的行为像一个单例?

最佳答案

如您所料,对象正在创建和销毁。问题是 self.phones属于而不是实例,因此由person 的所有实例共享。 .

要修复,请像这样更改您的类:

class person(object):
def __init__(self):
self.name = ""
self.age = ""
self.phones = []
def add_phone(self, number):
self.phones.append(number)

关于python - python中的对象破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com