擅长:python、mysql、java
<p>问题是未定义的<em>函数</em>。缺少引用<strong>self</strong>(每个类成员、字段或方法都需要):
<code>toys_list = self.add_toys()</code></p>
<h3>重新考虑设计</h3>
<p>为什么收集<em>玩具</em>要管理两次?
(a) 因为字段<code>toys</code>可以有重复项,
(b) 作为从<code>add_toys</code>返回,它将隐藏重复项并确保元素的唯一性</p>
<p>您必须保持两者同步。它们的功能不同,应该应用于不同的用例</p>
<h3>假设:独特的玩具</h3>
<p>我还将使用<strong>集作为字段<code>toys</code>的直接类型。因为通过这种方式,您可以重用现有的<em>数据结构</em>,它<strong>保证了您在^{<cd3>中显式实现的唯一性。此外,添加/更新功能便于修改集合</p>
<h3>改进:字符串构建</h3>
<p>此外,还可以重构字符串函数:</p>
<pre class="lang-py prettyprint-override"><code>def __str__(self):
subject = "{} is a {}".format(self.name, self.kind)
hasToys = "has no toys" if not self.toys else "has the following toys: {}".format(self.toys)
return "{subject} that {hasToys}".format (subject, hasToys)
</code></pre>
<p>它使用一个<strong>三元运算符<strong>,而不是if语句;通过直接引用(通过<code>self</code>!)新的<code>set</code>字段:<code>self.toys</code>
加上一个三步结构,允许<strong>单次返回<strong>,作为结尾清晰可见的预期</p>