Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的对象成员分配_Python - Fatal编程技术网

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

输出为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 = 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个引用。