2017-10-12 14 views
0

저는 파이썬 함수 test()를 사용하여 질문을 반복하고 끝에 답변을 묻는 메시지를 표시합니다. test() 함수와 같이 test()와 같은 다른 함수를 전달하려고 할 때, 질문을 역순으로 반복하거나() 질문을 반복하거나 odds_only() 등을 test() 함수로 전달하려고합니다. 나는 nameError를 얻는다. 아무도 제가 잘못 된 곳을 이해하도록 도와 주실 수 있습니까?함수를 arg로 전달할 때 NameError가 발생했습니다.

>>> my.test(mod=shuffle) 
... NameError: name 'shuffle' is not defined 


def test(self, mod=None): 
    if mod is not None: 
     return_value = mod() 

def shuffle(self): 
    list_of_questions = list(self.dictionary.keys()) 
    random.shuffle(list_of_questions) 
    return list_of_questions 
+0

? 클래스의'test'와'shuffle'은 있습니까? – kindall

+0

예 그들은 모두 클래스의 일부입니다.이 경우 클래스 백의 객체 일뿐입니다. – GainesvilleJesus

답변

2

테스트 및 셔플 모두 동일한 클래스의 메소드는, 다음 호출해야하는 경우 :`my`은 무엇입니까

my.test(mod=my.shuffle) 
+0

덕분에 지금은 훨씬 더 의미가 있습니다! – GainesvilleJesus

+0

테스트 (mod = shuffle)를 원한다면 클래스 외부에서 shuffle()을 가져 와서 main()에 삽입하거나 테스트 함수 내에서 사용 가능한 개조를 정의 할 수 있습니까? – GainesvilleJesus

+0

문자열을 전달한 다음'getattr()'을 사용하여'self'에 그 이름의 메소드를 얻을 수 있습니다. – kindall