【发布时间】:2016-01-19 21:09:59
【问题描述】:
我正在创建一个基本游戏来帮助理解类,其中 Player() 实例 (Ben) 拥有许多建筑物和单位。每个玩家,例如本,都会拥有各种建筑物,例如飞机工厂或机器人工厂。
class Player:
def __init__(self):
self.money = 200
self.score = 0
print('Created ')
def increase_money(self, amount):
self.money += amount
def decrease_money(self, amount):
self.money -= amount
def check_money(self):
print(self.money)
class Building(Player):
def __init__(self):
self.level = 0
self.upgrade_cost = 100
print('created building')
def upgrade_building(self):
self.level += 1
def check_building_level(self):
print(self.level)
ben = Player()
我意识到,如果我调用Building() 类来创建一个实例,它实际上会创建一个继承玩家属性的建筑实例(即每个建筑都有自己的钱)。
如何让每个玩家包含具有不同属性的各种建筑物和单位?例如,本和比尔有不同的建筑物。在这种情况下,我会使用单个 Player() 类,然后使用 Player() 内部的函数吗?
【问题讨论】:
-
你不是在寻找继承,而是在寻找组合。您将需要
Player中的一个类变量来管理播放器包含的Buildings 列表。 (而不是从 Player 继承)。 -
尽管您对该主题感到困惑,但您还是设法写了一个清晰的问题。我希望对于所有提出问题的新用户来说都是如此。 +1
标签: python class oop inheritance