2011-10-29 2 views
3

동일한 혼란스러운 스크립트로 돌아 가기 .. 내가 수정 한 간격 문제가 많이 있었지만 더 많이 놓치고있는 것 같습니까? 무엇이이 문제 - Python : "Self"가 정의되지 않았습니까?

여기 몇 줄은 위의 경우에 해당 스크립트 이하의 말을 라인 (332) 정의되지 않은 self ... 그것은 중요 :

#-Whats being decompiled start 
#map(None,*list) = zip(*list) 
class areaset(top_tsv): 
    def __init__(self, file_name=0, version=0): 
     top_tsv.__init__(self, file_name, version) 
    self.frombin_map = [ <--- this is 332 
    ('ID'  ,{'t':'ulong','lpad':0x04}), 
    ('Name'  ,{'t':'str','s':0x48,'rpad':0x1C}), 
    ('RGB color' ,{'t':'color','rpad':0x01}), 
    ('Sound effect ID' ,{'t':'long'}), 
    ('Color RGB' ,{'t':'rcolor','rpad':0x01}), 
    ('Lighting RGB value' ,{'t':'rcolor','rpad':0x01}), 
    ('Lighting angle' ,{'t':'float','s':0x03,'f':0x01}), 
    ('Is it City?' ,{'t':'ubyte','rpad':0x03}), 
    ] 

난 그냥 문이 안 열려도 그것을 밖으로, 나는 지금 생각할 수 없다. 다른 많은 "정의되지 않은"오류가 있지만,이 문제를 해결하면 적어도 나머지를 고치는 방법을 알게 될 것이다. 그래서 내가 뭘해야합니까?

+1

귀하와 귀하의 질문에 답변하는 사람들 모두에게 붙여 넣기 전에 최소한의 예제를 만들어 보는 것이 도움이 될 것입니다. 실제로 문제를 일으키는 원인을 파악할 수 없다면 실제로 실행되지 않는 스 니펫보다 전체 스크립트를 붙여 넣는 것이 좋습니다. 그러나 실제로 실행되는 작은 스 니펫을 만드는 것이 좋습니다. 오류. – Glyph

답변

10

코드에서 발췌 한 코드가 프로그램의 내용을 정확하게 반영하는 경우 문제는 사용자가 __init__ 생성자에 한 줄만 있습니다. 들여 쓰기를 수정해야합니다.

Self은 멤버 함수에서만 정의됩니다. 들여 쓰지 않은 코드는 생성자의 일부가 아니지만 실제로는 import 클래스를 실행하면 실행됩니다.

파이썬의 가장 큰 장점 중 하나는 중괄호 대신 문 블록을 인식하기 위해 들여 쓰기를 사용하거나 begin, end을 사용한다는 것입니다. 은 통역사가 코드를 이해하기 위해 들여 쓰기를 올바르게 사용해야합니다.

+1

나는 "아름다움"이 올바른 단어라고 확신하지 못했습니다. 하지만 파이썬은 모든 것을 고려한 훌륭한 언어라는 사실을 주장 할 수는 없습니다. 나에게는 공백 문제를 해결할 가치가있다. –

4

들여 쓰기가 파이썬에서 중요합니다. self__init__()에 정의되어 있으므로 을 332 행에서 참조하려는 경우 위의 행과 일치하도록 들여 씁니다.

+0

-1 매우 불완전한 설명 – Marcin