<p>您需要将代码移动一点:</p>
<pre><code>import math
val=int(input("Vill du använda πr2(1) eller (πd2)/4(2)"))
if val == "1":
class cirkel():
def __init__(self,radie):
self.A=radie
def area(self):
return ((self.A*self.A)*math.pi)
radie1=int(input("Vad är din radie?\n"))
circle=cirkel(radie1)
print("Arean av cirkeln är",circle.area())
if val == "2":
class cirkel():
def __init__(self,diameter):
self.A=diameter
def area(self):
return (((self.A*self.A)*math.pi)/4)
diameter1=int(input("vad är din diameter?\n"))
circle=cirkel(diameter1)
print("Arean av cirkeln är", circle.area())
</code></pre>
<p>原因是,在代码中,如果val为2,则类<code>cirkel</code>直到该位之后才定义:</p>
<pre><code>radie1=int(input("Vad är din radie?\n"))
circle=cirkel(radie1)
print("Arean av cirkeln är",circle.area())
</code></pre>
<p>因此,当您尝试设置<code>circle=circle()</code>时,尚未定义该类</p>
<p>我会说,总的来说,这不是一个好的设计。您应该考虑定义两个单独的类,然后根据Vall的值来决定使用哪一个类,例如:</P>
<pre><code>class CircleRad:
...
class CircleDiam:
...
if val == 1:
circle = CircleRad()
...
elif val == 2:
circle = CircleDiam()
...
</code></pre>
<p>(另请注意,根据PEP8惯例,类的名称应以大写字母开头。)</p>