我是python的新手,我正在练习在终端中编写课程
我写了以下
>>> class Calculator:
... def calculate(self,expression):
... self.value=eval(expression)
... class Talker:
我输入class Talker:
时如上所述
我收到以下错误
File "<stdin>", line 4
class Talker:
^
IndentationError: unindent does not match any outer indentation level
我无法理解为什么会出现这种缩进错误?我如何从这里开始。
基于更新
我纠正了错误,现在我写了以下
class Calculator:
... def calculate(self,evaluate):
... self.value=eval(expression)
... class Talker:
... def talk(self):
... print 'Hi, my value is ', self.value
... class TalkingCalculator(Calculator,Talker):
... pass
...
现在我收到了错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in Calculator
File "<stdin>", line 7, in Talker
NameError: name 'Calculator' is not defined
这是什么错误,我错过了什么?
答案 0 :(得分:2)
您已将Talker
类缩进到Calculator
类内,但与Calculator
类的方法的缩进不一致。空间量需要保持一致。
嵌套类在其定义位置的范围内是本地的,并且通过缩进进行控制。子类是继承超类属性的类。
您似乎不希望Talker
成为Calculator
的子类或嵌套类,但TalkingCalculator
是Calculator
和Talker
的子类}。
>>> class Calculator(object):
... def calculate(self,evaluate):
... self.value=eval(expression)
...
>>> class Talker(object):
... def talk(self):
... print 'Hi, my value is ', self.value
...
>>> class TalkingCalculator(Calculator, Talker):
... pass
答案 1 :(得分:1)
正如Daniel指出的那样,假设你想让Talker成为一个单独的类,你需要保持与第一个“class Calculator:”行相同的缩进,这意味着“......”和“class Talker”之间没有空格。 :”
看看这个有关python缩进的更深入讨论。 http://www.diveintopython.net/getting_to_know_python/indenting_code.html