python中的对象成员分配
输出为0而不是20。我总是很难弄清楚python中类成员和对象成员的区别。您不应该以这种方式创建python中的对象成员分配,python,Python,输出为0而不是20。我总是很难弄清楚python中类成员和对象成员的区别。您不应该以这种方式创建Func的列表 class Func: def __init__(self): self.weight = 0 class Skill: def __init__(self, bson): self.f = [Func()]*5 for i in range(0,5): self.f[i].weight = bso
Func
的列表
class Func:
def __init__(self):
self.weight = 0
class Skill:
def __init__(self, bson):
self.f = [Func()]*5
for i in range(0,5):
self.f[i].weight = bson['w'+str(i+1)]
d = {"w1":20,"w2":0,"w3":0,"w4":0,"w5":0}
s = Skill(d)
print s.f[0].weight
你应该使用列表理解或其他方法
self.f = [Func()]*5
在第一种方法中,创建长度为5的
列表
,所有元素都指向Func
的相同实例。如果您不想这样做,您需要创建一个列表,其中包含函数的5个不同实例
您不应该以这种方式创建函数的列表
class Func:
def __init__(self):
self.weight = 0
class Skill:
def __init__(self, bson):
self.f = [Func()]*5
for i in range(0,5):
self.f[i].weight = bson['w'+str(i+1)]
d = {"w1":20,"w2":0,"w3":0,"w4":0,"w5":0}
s = Skill(d)
print s.f[0].weight
你应该使用列表理解或其他方法
self.f = [Func()]*5
在第一种方法中,创建长度为5的列表
,所有元素都指向Func
的相同实例。如果您不想这样做,您需要创建一个列表,其中包含函数的5个不同实例
您不应该以这种方式创建函数的列表
class Func:
def __init__(self):
self.weight = 0
class Skill:
def __init__(self, bson):
self.f = [Func()]*5
for i in range(0,5):
self.f[i].weight = bson['w'+str(i+1)]
d = {"w1":20,"w2":0,"w3":0,"w4":0,"w5":0}
s = Skill(d)
print s.f[0].weight
你应该使用列表理解或其他方法
self.f = [Func()]*5
在第一种方法中,创建长度为5的列表
,所有元素都指向Func
的相同实例。如果您不想这样做,您需要创建一个列表,其中包含函数的5个不同实例
您不应该以这种方式创建函数的列表
class Func:
def __init__(self):
self.weight = 0
class Skill:
def __init__(self, bson):
self.f = [Func()]*5
for i in range(0,5):
self.f[i].weight = bson['w'+str(i+1)]
d = {"w1":20,"w2":0,"w3":0,"w4":0,"w5":0}
s = Skill(d)
print s.f[0].weight
你应该使用列表理解或其他方法
self.f = [Func()]*5
在第一种方法中,创建长度为5的列表
,所有元素都指向Func
的相同实例。如果您不想这样做,您需要创建一个列表,其中包含5个不同的Func
实例属性的列表;您创建了一个列表,其中包含对Func()
类的一个实例的5个引用;您创建了一个列表,其中包含对Func()
类的一个实例的5个引用;您创建了一个列表,其中包含对Func()
类的一个实例的5个引用;您创建了一个列表,其中包含对Func()
类的一个实例的5个引用。