我正在为二十一点模拟器制定框架。
我有一个Player
类和一个Deck
类。我需要交易球员卡。我应该将Player
传递给Deck
函数,如下所示:
class Deck:
def give_cards(self, player, numcards):
player.hand.append('function that returns numcards'):
return player
或者我应该让玩家有一个功能,它接受牌组或牌列表作为输入?
class Player:
def grab_cards(self, deck)
self.hand.append(deck.'function that returns numcards')
如果这个信息不够,我很抱歉,我很乐意编辑。我只是不确定要为这个谷歌做什么。我相信我可以同时工作,但风格和最好的设计我很好奇。谢谢大家。
答案 0 :(得分:1)
你不应该这样做。将该任务分为两部分:
我也会对方法使用一些不同的名称,因为get
强烈建议该方法将返回调用者的东西(没有副作用),这不是正在发生的事情。
代码(根据您的实际情况进行调整):
class Deck:
def extract_cards(self, numcards):
# extract cards from the deck
cards = self.cards[:numcards]
del self.cards[:numcards]
# return that list of card objects
return cards
class Player:
def add_cards(self, cards)
# simply add the given cards to this player's hand
self.hand.append(cards)
你可以这样做:
player.add_cards(deck.extract_cards(5))
这样一个班级不需要知道另一个班级。