2014-11-14 4 views
0

파이썬 3에서 클래스 메소드를 n 초마다 실행하려고합니다.n 초마다 클래스 메소드 실행

나는 Threading이 좋은 접근 방법이라고 생각했습니다. 질문 (Run certain code every n seconds)은 객체없이이를 수행하는 방법을 보여줍니다.

나는 "전송"이 코드는 다음과 같이 OOP하기 위해 노력 :

class Test: 
    import threading 
    def printit(): 
     print("hello world") 
     threading.Timer(5.0, self.printit).start() 

test = Test() 
test.printit() 

>> TypeError: printit() takes no arguments (1 given) 

나는이 오류가 발생합니다.

바로 할 수 있습니까?

+1

귀하의 방법이 잘못 정의되었습니다. 자기 매개 변수 –

+0

이 맞지 않습니다. 나는 조금 부끄러워. O – speendo

+2

한 지점이나 다른 지점에서 모두에게 일어난 일입니다. 당신이 정의한 것은 정적 방법입니다. 만약 당신의 클래스가 정말로 어떤 데이터도 포함하고 있지 않고 오직이 메소드 만 가지고 있다면, 그 정의를 그대로두고'Test.printit() '을 사용해야한다. –

답변

2

self를 printit 메소드에 추가하면 나에게 적합합니다. 또한 import 문은 클래스 정의가 아닌 파일의 맨 위에 있어야합니다.

import threading 

class Test: 
    def printit(self): 
     print("hello world") 
     threading.Timer(5.0, self.printit).start() 

test = Test() 
test.printit() 
+0

오! 와아! 고맙습니다! – speendo

+0

걱정하지 마라, 우리 모두에게 일어난다! – mdadm