python - 2个类的实例,但似乎它们是相同的
问题描述
我期待 obj1 和 obj2 会有不同的 deck.cards,为什么它们是相同的,我如何使它们成为 2 个实例?
class deck:
cards ={}
def __init__(self, key, value):
self.cards[key]=value
return
>>> obj1 = deck("a", "1")
>>> obj2 = deck("b", "2")
>>> print (obj1.cards, obj2.cards)
{'a': '1', 'b': '2'} {'a': '1', 'b': '2'}
解决方案
在您的代码中,cards
两个实例中的值是相同的,因为您创建了cards
一个类变量,这意味着它由该类的所有实例共享。
要解决您的问题,请创建cards
一个实例变量。像这样写你的类:
class Deck:
def __init__(self, key, value):
self.cards = {
key: value,
}
请注意,这return
是不必要的,因为初始化程序无论如何都会在最后返回。
推荐阅读
- swift - 如何告诉 Swift 使用像素或点?
- c# - 如何将具有另一种复杂对象类型的属性的对象序列化为 XML / SOAP?我不断收到无效的文档结构
- angular - 如何扩展 PrimeNG DropDown 的标签区域?
- perl - 如何有条件地合并一行的最后 2 个字符?
- scala - Spark Dataframe - 编码器
- linux - Why is the default group of Git files in Windows is 197121?
- reporting-services - 如何将图像从 Google Drive 嵌入到 SSRS 但图像处于私有模式(需要身份验证才能访问此图像)?
- .htaccess - 当 URL 有连字符和斜杠时,.htaccess 301 重定向无法正常工作
- lua - 我可以从另一个导入的 lua 脚本访问我的 lua 脚本中的变量吗?
- haskell - getArgs 字符串到 int