假设你有一个游戏,你可以训练有附加成本的单位,你想成为一个能够计算训练一定数量的单位的总成本的人。你知道吗
这些单位都共享相同的属性,但是这些属性的值在不同的单位之间会发生变化。你知道吗
我使用字典找到了两种可能的解决方案:
spearmen = {'gold' : 2, 'wood' : 10, 'stone' : 5, 'iron' : 0}
swordsmen = {'gold' : 5, 'wood' : 30, 'stone': 0, 'iron' : 10}
但我发现获取信息的方法有点冗长:
swordsmen['gold'] * 1200
所以我想知道这样做是否合适:
class Spearmen:
gold = 2
wood = 10
stone = 5
iron = 0
class Swordsmen
gold = 5
wood = 30
stone = 0
iron = 10
使用类可以使访问信息稍微不那么冗长:
Spearmen.gold * 1200
做了一些粗略的研究,我发现this question,这表明我尝试做的更多的时候被认为是反模式的。所以我也不确定这个解决方案。你知道吗
当考虑到我的程序的发展时,我不太可能必须为单位添加新的属性,但是我更可能需要添加新的单位(具有相同的属性)。你知道吗
因此,我想知道这些解决方案中的任何一个是否合适,或者是否有更好的方法来做到这一点(为什么它们是错误的)。你知道吗
对象的属性应该是对象定义(类)的一部分。如果这些对象共享一组公共属性,那么它们应该从父类继承。你知道吗
至于如何储存它们,有很多方法。您可以有一个父类来定义公共对象的默认属性(正如@zondo所建议的,一个单元类);这些属性可以存储为字典。你知道吗
您可以修改继承类中的字典,以覆盖默认属性的值,或者为特定的单位类型创建新属性。你知道吗
相关问题 更多 >
编程相关推荐