python - Python - 访问另一个类中的类属性,这不是它的孩子
问题描述
我正在做一些家庭作业,我们从那里开始 OOP,但我对此并没有信心。
假设我有 X 类 Card 实例,其中 Card 是另一个子类(如卡片类型等)的父类,但总的来说,我将它们全部保存在变量“实例”中,例如 20 个实例。我需要将这些实例中的 10 个放入另一个名为 Deck 的类中,我将在其中创建新列表“deck”并将这 10 张卡放入其中,然后我会将它们分成两半给 2 个玩家。
我的问题是我只是不知道如何将这些实例从类 Card 移动到类 Deck 并将它们拆分为这两个玩家的后记。感谢您的帮助,我希望我说清楚了。
class Card:
instances = []
def __init__(self, name):
self.__name = name
self.__class__.instances.append(self)
class Deck:
deck = []
def __init__(self):
self.__class__.deck.append(Card.instances)
class Player(Deck):
def __init__(self, name, deck):
super().__init__(deck)
self.__name = name
def main():
card1 = Card('Card1')
card2 = Card('Card2')
card3 = Card('Card3')
p1 = Player('Tim')
p2 = Player('Jill')
if __name__ == '__main__':
main()
解决方案
因此,首先,您实现Deck
了它包含 all 的列表Cards
。你会想要init
一个只有它的名字的牌组(可能还有几张起始牌),然后在这个类中有方法来添加和取出任何其他牌。您可以为此使用以下代码:
class Deck:
def __init__(self, init_cards=None):
self.deck = []
if init_cards:
self.deck.extend(init_cards)
def add_card(self, card):
self.deck.append(card)
def withdraw_card(self, card_name):
return_card = None
for card in self.deck:
if card.name == card_name:
return_card = self.deck.remove(card)
return return_card
接下来,您可以使用他们的卡片创建卡片组,并使用类中的函数在卡片组之间传递卡片Deck
。给每个玩家一个牌组作为变量,然后引用它。
推荐阅读
- shell - 在 Ubuntu EC2 上构建 Docker 容器时,NPM 安装总是在同一个地方失败
- laravel - Laravel 存储库类 App\Repository\User 不存在
- php - 如何计算 24 小时制 H:i 时间之间的差异?
- java - 如何使用 PowerMock 和 Mockito 对 Files.java 中的 newDirectoryStream 进行部分模拟?
- c# - 如何在 MQL4 中修复“未解决的导入调用:在 y.dll 中找不到 x()”
- javascript - JavaScript:如何对嵌套数组进行分组
- sql-server - 在 Microsoft SQL Server Management Studio 中找不到数据库实例
- ruby-on-rails - Ruby on Rails 中的活动记录
- java - 如何更改非 sp 比例的字体大小?
- python - 如何创建 get_cartesian 函数