有没有办法从 Python 中的两个不同对象访问同一个对象?

我一直在尝试通过制作纸牌游戏来练习 Python 课程。简单地说,人类玩家可以从同一副牌中玩电脑。我的问题是如何让人类玩家和计算机访问同一副牌?

我创建了一个 Player 类、一个 Computer 类和一个 Deck 类。Player 类和 Computer 类都具有 Deck 类。在 Deck 类中,我有一个用于“deck”的类变量。但我注意到的是,如果我将 Deck 方法应用于“deck”类变量,然后将其作为播放器的实例调用,则对“deck”类变量的任何更改都与播放器实例相关联,因此计算机实例将无法访问它。

也许我错过了一些东西,或者我完全错了,有人可以提供一些意见吗?


catspeake
浏览 260回答 1
1回答

冉冉说

Player 类和 Computer 类都固有的 Deck 类这不是理想的方法。如果两个类在概念上满足“是一个”关系,则该类应仅从另一个类继承。例如,Dog 应该从 Animal 继承,因为狗是一种动物。牌手不应继承牌组,因为牌手不是牌组。与其继承,不如尝试使牌组成为玩家和计算机对象的属性。如果甲板对象是可变的,则对它的更改将从两个对象都可见。class Deck:    def __init__(self):        self.cards = ["Pot of Greed", "Black Lotus", "Ace of Spades", "Draw Four"]class Player:    def __init__(self, name, deck):        self.name = name        self.deck = deckclass Computer:    def __init__(self, difficulty, deck):        self.difficulty = difficulty        self.deck = deckd = Deck()p = Player("Steve", d)c = Computer("Easy", d)#confirm that the player and computer decks are the same objectprint(p.deck is c.deck)#changes made to the deck via p will be observable from c and vice versap.deck.cards.append("How to Play Poker Instruction Card")print(c.deck.cards)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python