在终端上练习课堂缩进的错误

时间:2013-06-03 15:02:16

标签: python python-2.7

我是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

这是什么错误,我错过了什么?

2 个答案:

答案 0 :(得分:2)

您已将Talker类缩进到Calculator类内,但与Calculator类的方法的缩进不一致。空间量需要保持一致。

嵌套类在其定义位置的范围内是本地的,并且通过缩进进行控制。子类是继承超类属性的类。

您似乎不希望Talker成为Calculator的子类或嵌套类,但TalkingCalculatorCalculatorTalker的子类}。

>>> 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