我正在尝试建立一个类,该类中的实例可能(或可能不)相关并且具有不同的“权重”。我能想到的唯一简单的例子是在很多游戏中都有宝石,您可以将较少的宝石合并为质量更高的宝石,但也可以在其中独立找到它们。
还请原谅我对Python的屠杀,我很新,我也不知道该如何处理。
class Gem:
def __initi__(self, name, buyCost, sellCost, ingredients):
self.name = name
self.buyCost = buyCost
self.sellCost = sellCost
self.ingredients = ingredients
gems = [
Gem("Chipped Topaz", 2, 1, null),
Gem("Topaz", 20, 10, 3x[Chipped Topaz]),
Gem("Greater Topaz", 200, 100, 5x[Topaz]),
Gem("Prism", 5000, 500, 1x[Greater Topaz] and 1x[Greater Emerald] and 1x [Greater Amethyst])
]
因此,切碎的托帕石是一种“基础”宝石,没有任何东西可以组合成切碎的托帕石,就是这样。然后,您可以将3个切碎的托帕石合并成一个托帕石,将5个托帕石合并成一个更大的托帕石,最后您可以将3个不同的较大宝石合并成一个棱镜。
我想要实现的是Gem类的所有相关实例之间的关系,因此,例如,我可以轻松地沿线层叠并得出结论,对于更大的黄玉,我需要15个切碎的黄玉。但是,如果我仅将Gem的黄玉实例更改为需要4片黄玉,那同样的计算将表明我需要20颗黄玉。
总结:
我不知道我是否要正确解决问题。上面的代码肯定是错误的,任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
我看到两种方法
(1)使用变量并创建第一个gem
gem_chiped_tobaz = Gem("Chipped Topaz",...)
现在您可以在下一个gem中使用变量gem_chiped_tobaz
gem_topaz = Gem("Topaz", ... [gem_chiped_tobaz])
直接访问第一个gem的第一个实例。
这样,您可以创建三个相同类的实例并使用它们
gem_1 = Gem("Chipped Topaz",...)
gem_2 = Gem("Chipped Topaz",...)
gem_2 = Gem("Chipped Topaz",...)
gem_topaz = Gem("Topaz", ... [gem_1, gem_2, gem_3])
(2)保留在字典中,然后可以使用字符串
gems = {
"Chipped Topaz": Gem("Chipped Topaz", 2, 1, None),
"Topaz": Gem("Topaz", 20, 10, ["Chipped Topaz", "Chipped Topaz", "Chipped Topaz"]),
}
然后第二个gem(“ Topaz”)可以使用字符串"Chipped Topaz"
来访问gem["Chipped Topaz"]
此方法似乎更有用,但我不知道它是否可以解决您的所有需求,因为它使用三个字符串"Chipped Topaz"
,可以访问同一实例,而不是三个不同实例。