2011-04-10 3 views
0

다시 마지막 게시물로 이진 배열과 달리 수정하기가 더 쉽지만 다소 어려움을 겪고 있습니다. 기본적으로 함수 이름을 사용하여 타이머 객체를 만들었습니다. 그러나 내가 부르는 함수가 이름 오류에 정의되어 있지 않기 때문에 문제가 계속 발생합니다.파이썬에서 Timer 객체로 어려움을 겪고 있습니다.

class DrawBot(): 
    waitingt = Timer(30.0, lockmap) 
    ... 
    def onlockmap(self, user): 
     self.onBackup(user, "lockmapbackup") 
     waitingt.start() 

    def lockmap(): 
     onrestoremap("lockmapbackup") 


NameError: name 'lockmap' is not defined 

답변

1

lockmap()DrawBot()의 일부입니다, 그래서 당신은 그 자체로 호출한다면, 당신은 NameError을받을 것입니다. 참조하는의 classself를 사용하여 호출

봅니다 : 당신이 실제 정의에 도달 할 때까지

waitingt = Timer(30.0, self.lockmap) 
+0

'self' 인스턴스를 참조하지만, 검색 알고리즘은 또한 클래스의 경우를 검색 할 : 게다가, 당신은 아마 클래스의 모든 인스턴스에서 공유 하나의 타이머를하고 싶지 않아 ... 대신 시도 인스턴스에는 이름이 없습니다. 이 클래스 인스턴스에는 클래스 인스턴스에 대한 Timer 인스턴스가 있어야합니다. – Keith

+0

아, 고마워. 'Timer' 클래스는 본 적이 없으므로 일반적인 에러라고 생각했습니다 ... – Blender

2

그것은 정의되지 때문에.

class DrawBot(): 
    def __init__(self): 
     self.waitingt = Timer(30.0, self.lockmap) 
    ... 
    def onlockmap(self, user): 
     self.onBackup(user, "lockmapbackup") 
     self.waitingt.start() 

    def lockmap(self): 
     onrestoremap("lockmapbackup") 
+0

여기서'self.lockmap'을 사용해야한다고 생각합니다. – Keith

+0

@ 키스 : 예. :) – Amber

관련 문제