python类对象赋值_为类变量赋值就是为该对象的所有实例赋值

在Python编程中,类的实例化对象通常拥有独立的属性。然而,当类变量是一个字典时,对这个字典的修改会影响到所有实例。问题在于如何确保每个实例的字典是独立的,不互相影响。通过创建一个测试类`Foo`,作者发现直接对字典进行操作不会导致相同问题,这表明在`Fleet`类中可能需要将字典作为实例变量而不是类变量来实现独立性。
摘要由CSDN通过智能技术生成

我有一堂课有一本字典。在

我创建了n个类的实例。在

当I+=字典中键上的值时,它会反映在我从该对象实例化的每个对象中。在

如何使该字典对该类的每个实例化都是唯一的?在

以下是我如何创建对象:for num in range(0, numOfPlayers):

listOfPlayerFleets.append(fleet.Fleet())

下面是如何调用addShip方法。我把它放在for循环中,并验证了currentPlayer int每次都在递增。在

^{pr2}$

下面是我的舰队对象中的代码作为示例。在class Fleet:

""" Stores Fleet Numbers, Represents a fleet """

shipNamesandNumber = {}

def addShip(self, type, numToAdd):

self.shipNamesandNumber[ships.shipTypesDict[type]['type']] += numToAdd

在pydev中,当我逐步调用这个函数时,每个带有shipNames和numbers的对象都会以numload递增。在

即使舰队对象在内存中的不同位置也会发生这种情况。在

我必须交另一个班的字典吗?我写了一个测试类来验证这一点:class Foo:

"""Testing class with a dictionary"""

myDictionary = {}

def __init__(self):

self.myDictionary = {'first':0, 'second':0}

def addItem(self, key, numToAdd):

self.myDictionary[key] += numToAdd

numOfFoos = 2

listOfFoos = []

for num in range(0, numOfFoos):

listOfFoos.append(Foo())

listOfFoos[0].addItem('first', 1)

listOfFoos[0].addItem('first', 2)

listOfFoos[1].addItem('first', 2)

print " This is the value of foo1 it should be 3"

print listOfFoos[0].myDictionary

print "This is the value of foo2 ot should be 2"

print listOfFoos[1].myDictionary

当一个字典被修改时,Foo类没有我的fleet对象修改所有字典的问题。在

所以这让我更加困惑。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值