2013-06-03 4 views
0

에서 연습하고 난 다음 얻을
위에 나는대로 class Talker:를 입력으로 나는 최대한 빨리오류가 나는 파이썬에 새로운 오전 터미널

>>> class Calculator: 
...  def calculate(self,expression): 
...   self.value=eval(expression) 
... 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

'class talker' 한 칸을 들여 썼습니다. 들여 쓰기를하지 마십시오. –

+0

나는 당신이 당신의 코멘트를보고 난 후에 무엇을 제안했지만 나는 오류 파일 ""라인을 가지고 4 클래스 전병 : ^ 구문 에러 : 유효하지 않은 구문 –

+0

왜이 질문이 아래로 –

답변

2

Talker 클래스를 들여 쓰기하여 Calculator 클래스에 넣지 만, Calculator 클래스의 메소드가 들여 쓰기가 일치하지 않습니다. 공간의 양은 일관성이 있어야합니다.

중첩 클래스는 정의 된 곳의 범위에서 로컬이며 들여 쓰기를 통해 제어됩니다. 서브 클래스는 이 수퍼 클래스의 속성 인을 상속하는 클래스입니다.

당신이 서브 클래스 또는 Calculator의 중첩 클래스로 Talker을 원하지만 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 
+0

흠 클래스 전병을 닫는 투표 하위 클래스로 가지고있다 계산기의 메소드가 하위 클래스가됩니다 –

+0

@ 등록 된 사용자 아, 토커가 하위 클래스가되기를 바랬습니다. 내 예를 업데이트했습니다. – cmd

+0

감사합니다.이 일이 우분투의 python 커맨드 라인에 붙여 넣기 코드를 복사하는 쉬운 방법이 있다면 알려주세요. –

1

다니엘은 당신이 토커는 별도의 클래스로 원하는 가정, 지적, 당신은 첫 번째로에게 같은 들여 쓰기를 계속해야 "클래스 계산기 :"라인의 "..."사이에 공백 의미가없는 및 "클래스 토커 :".

파이썬 들여 쓰기에 대해 자세히 알아 보려면이 부분을 살펴보십시오. http://www.diveintopython.net/getting_to_know_python/indenting_code.html.

+0

아니요 –

+1

계산기의 하위 클래스가 되려면 다음을 시도하십시오. "class talker :"대신 "class Talker (Calculator) :"를 시도하십시오. 자세한 내용은 [여기] (http://www.diveintopython.net/object_oriented_framework/defining_classes.html). – WhiteHalmos

+0

하위 클래스 - 상속, 내부 클래스 - cmd가 위에 보여준 것. – WhiteHalmos

관련 문제