【发布时间】:2020-04-06 07:46:33
【问题描述】:
我目前正在做一个需要我制作游戏的python项目;我已经定义了一个名为Game 的类,它在初始化时采用P1和P2(Player 类实例)。
然后我定义了一个名为deck 的列表,然后我将其重新洗牌并重新定义为新洗牌的牌组。问题是当我打印deck 时,它会打印None。
import random
class Game():
deck = []
def __init__(self, p1, p2):
self.p1 = p1
self.p2 = p2
self.__generateCards()
def __generateCards(self):
colors = ['red', 'black', 'yellow']
for x in range(0,3):
for y in range(1,11):
li = [colors[x], y]
self.deck.append(li)
self.deck = random.shuffle(self.deck)
print(self.deck)
【问题讨论】:
-
不相关,但您不想将
deck设为类属性(类属性在类的所有实例之间共享)。从类块中删除deck = []并在__init__之前 调用self._generatedCards()中添加self.deck = []。 -
另外,不要对实现属性或方法使用双前导下划线 - 约定是一个前导下划线。双下划线(触发名称修改机制)只是为了防止意外的名称冲突,实际上在实践中几乎没有用处,即使在巨大的框架中也是如此。