【发布时间】:2019-08-29 03:17:53
【问题描述】:
我有一个Player 类,它有许多属性来衡量它们的整体状态。我有第二类Character(类类型),它根据我的角色实例为我的玩家设置一些独特的配置。我遇到麻烦的地方是在玩家级别调用一个通用函数来衡量每个角色的独特里程碑目标。即检查每个玩家,看看他们是否已经达到了他们独特的里程碑 1。我最初尝试在初始化下使用一系列条件函数来做到这一点,但事实证明这在一个类中是不明智的,所以我把它移到了它的自己的单一功能。由于这样做,它显然会失败,因为函数正在检查的属性在父类 (Player) 中,而不是在定义函数的类 (Character) 中。
class Player:
def __init__(self, player_num, name):
self.character = Character(name)
self.player_num = player_num
self.name = name
self.power = 0
self.position = 1
self.attributeLimit = 4
self.attributes = []
self.attachments = []
self.collection = []
self.visited = []
self.setCharacterValues()
self.ms1 = self.character.Milestone1
def setCharacterValues()
#Loads Character instance data into the Player instance.
class Character:
def __init__(self, name):
self.attributes = []
self.attachments = []
self.collection = []
self.visited = []
self.name = name
if name == 'char x':
self.attributes = [1,2,3]
#etc.
#etc.
def Milestone1(self):
if self.name == 'char x':
if self.power >= 20:
return True
else:
return False
if self.name == 'char y':
if self.position >= 5:
return True
else:
return False
#etc
for i in players:
if i.ms1():
print('Passed')
现在我能想到的唯一解决方案是将函数从 Character 类移动到 Player 类。但这对我来说似乎与直觉相反,因为此功能正在衡量每个独特角色达到里程碑的能力。 感觉 将它留在字符下是合适的,我只是在某处遗漏了一个明显的步骤。有人可以帮忙吗?
【问题讨论】:
-
为什么不使用继承呢?
-
它是使用子类/继承解决的。谢谢!