【发布时间】:2021-04-23 23:09:52
【问题描述】:
当我在列表理解中打印该类时,它说它没有属性“名称”,但它显然有。另外,如果我为一个设置名称,它会为所有设置名称,就好像它们都是同一个类一样?
class A(object):
def __init__(self, name):
if name:
self.name = name
else:
self.name = "no name"
def __repr__(self):
return self.name
all_a = [A for i in range(5)]
other_a = []
for i in range(5):
name = " name " + str(i)
a = A(name)
other_a.append(a)
print(all_a)
for a in all_a:
print(a)
print(a.name)
all_a[0].name = "all a zero"
all_a[1].name = "all a one"
for a in all_a:
print(a)
print(a.name)
for a in other_a:
print(a)
如果我删除 name 参数,它仍然会崩溃:
class A(object):
def __init__(self):
self.name = "no name"
def __repr__(self):
return self.name
all_a = [A for i in range(5)]
other_a = []
for i in range(5):
name = " name " + str(i)
a = A()
other_a.append(a)
print(all_a)
for a in all_a:
print(a)
print(a.name)
all_a[0].name = "all a zero"
all_a[1].name = "all a one"
for a in all_a:
print(a)
print(a.name)
for a in other_a:
print(a)
【问题讨论】:
标签: python-3.x list class attributes list-comprehension