回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在用Python。我读了一点关于这个的书,似乎无法把我的思想集中起来。我想做的是有一个叫做魔药的类,里面有各种魔药对象。现在只有一种药水,一种简单的保健药水。我希望药水可以堆放在库存和商店库存中。所以我需要一个库存药水数量的实例和一个携带药水的商店存货的实例。药水的数量是动态的,用于购买/出售和掠夺药水。如果有人能提供一个基本的解释或例子,这将是伟大的。</p>
<p>以下是我的一小部分:</p>
<pre><code>class Potion(Item):
def __init__(self, name, desc, val, amt, type, effect, bound):
Item.__init__(self, name, desc, val, amt, type, effect, bound)
self.name = name
self.desc = desc
self.val = val
self.amt = amt
self.type = 0 #Restorative
self.effect = effect
def use(self, you):
#Use health potion
you.hp_current += self.effect
you.displayStats()
#Format: Name, Description, Value, Amount, Type, Effect, Bound
HealthPotion = Potion('Health Potion', 'Restores 10 hit points when consumed', 10, 0,
0, 10, 0)
</code></pre>
<p>理想情况下,默认值设置为0,我可以声明某个商店的库存将从多少开始。库存和车间库存被设置为一个数组,用于向/从中追加和移除项目。我想我已经搞定了这个方法的逻辑,我只是在计算数量时遇到了麻烦。</p>
<p><strong>编辑:</strong>这是我在buy方法中的一部分,用来查看不使用实例时会发生什么。它很难看,我发现you.inventory.y.amt不起作用。是从“商店”中显示的项目列表中选择的项目</p>
<pre><code> x = selection - 1 #Item menu starts at 1. But arrays start at 0. So it takes user input and subtracts 1 to match the array.
y = self.stock[x]
if y.val <= you.coin:
if y.amt == 0:
you.inventory.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(y)
you.inventory.y.amt += 1
else:
you.inventory.y.amt += 1;
you.coin -= y.val
self.funds += y.val
if self.stock.y.amt > 1:
self.stock.y.amt -= 1
else:
self.stock.y.amt -= 1
self.stock.pop(x)
</code></pre>
<p>我看过这样的例子:</p>
<pre><code>class foo:
a = 1
i = foo()
foo.a => 1
i.a => 1
i.a = "inst"
foo.a => 1
i.a => "inst"
</code></pre>
<p>我想知道我是否不只是创建第二个健康药水对象,但这听起来不对。这个例子让我有了不同的想法。也许我只是不懂举例。</p>
<p>“这将创建Employee类的第一个对象”</p>
<pre><code>emp1 = Employee("Zara", 2000)
</code></pre>
<p>“这将创建Employee类的第二个对象”</p>
<pre><code>emp2 = Employee("Manni", 5000)
</code></pre>
<p>谢谢!</p>