<p>错误不在于你分配东西的方式,而在于你访问它们的方式</p>
<p>正如您必须<code>self.bSayisi</code>设置</em>属性一样,您也必须<code>self.isim</code>访问</em>一个属性。所以:</p>
<pre><code>print(self.isim, "başarılı")
</code></pre>
<p>(另一行也一样…)</p>
<hr/>
<p>如果您想知道为什么您能够访问其他值,如<code>bSayisi</code>,而不使用<code>self.bSayisi</code>,那只是因为您碰巧有一个名为<code>bSayisi</code>的参数,它恰好与<code>self.bSayisi</code>具有相同的值(因为您刚才几行就实现了这一点)。如果您将其更改为<code>self.bSayisi = bSayisi*2</code>,或者将参数重命名为<code>myBSayisi</code>,并执行了<code>self.bSayisi = myBSayisi</code>,您会发现仅仅使用<code>bSayisi</code>而不是<code>self.bSayisi</code>不再正确</p>
<hr/>
<p>然而,虽然这消除了错误,但我不确定它是否真的符合您的要求。在执行这个<code>print</code>时,还没有为对象指定<code>isim</code>值,所以它将获得类值作为默认值,所以它总是<code>" "</code>。那真的是你想要的吗</p>
<p>如果没有,则需要将<code>print</code>调用移动到其他方法,在分配了<code>isim</code>之后,可以稍后调用这些方法。例如:</p>
<pre><code>class sayfa():
isim=" "
def __init__(self,bSayisi,ySayisi,pSayisi,iSayisi,tSayisi):
self.bSayisi=bSayisi
self.ySayisi=ySayisi
self.pSayisi=pSayisi
self.iSayisi=iSayisi
self.tSayisi=tSayisi
def displaystuff(self):
if ((((self.bSayisi+self.ySayisi+self.pSayisi)/self.iSayisi)/self.tSayisi)*100)>0.2:
print(self.isim,"başarılı")
else:
print(self.isim,"başarısız")
ybs1=sayfa(365000,65000,870,500,1125000)
ybs1.isim="YBS-1"
ybs1.displaystuff()
</code></pre>
<hr/>
<p>当然,将<code>isim</code>移到构造函数中可以避免遇到的问题。当然,这不是如何在<code>__init__</code>方法之后添加数据的答案,因为您将在<code>__init__</code>方法中添加数据。如果合适的话,这是最简单的答案</p>
<p>但如果在这种情况下看起来很奇怪(我相信你的话;我不知道这段代码到底想做什么),这可能是这个特定类的错误答案</p>
<p>在这种情况下,您确实需要知道如何按照要求在<code>__init__</code>方法之后添加数据。或者,更确切地说,您需要知道如何<em>访问</em>该数据,因为您已经正确地添加了它</p>