2011-11-23 2 views
1

클래스의 파이썬 함수에 다른 스크립트에 액세스하려고합니다. 이것은 나에게 다음과 같은 오류를 제공합니다Python 함수에 액세스하려고 시도 할 때 AttributeError가 발생했습니다.

AttributeError: 'module' object has no attribute 'functionName' 

기능은 클래스에 존재하고 classname.functionName() 호출을 통해 액세스 할 수 있습니다. 누락 된 것이 있습니까?

-update-

내 코드는 다음과 같습니다 따라서

(program.py) 
import ImageUtils 
import ... 
class MyFrame(wx.Frame): 
... 
    ImageUtils.ProcessInformation(event) 


(ImageUtils.py) 
import statements... 
class ImageUtils(threading.Thread): 
    def ProcessInformation(self, event): 
     self.queue.put(event) 

오류는 다음과 같습니다 AttributeError은 '모듈'개체가 어떤 속성 'ProcessInformation' 그래서, 나는이 두 번째를 확인해야 할이 없습니다 모듈을 스크립트로 작성 하시겠습니까?

+0

당신이 당신의 코드를하시기 바랍니다 게시 할 수 있습니까? –

+0

아마도 오류를 throw하는 코드 스 니펫일까요? 가져 오기 단계에서 오류가 발생할 수 있기 때문에 모듈에 대한 import 문은 물론입니다. –

+0

여기에 정보를 추가 할 수 있습니까? 목록 가져 오기, 파일 트리, 등? –

답변

2

아마 당신은 클래스가 아닌 모듈에서 함수를 호출하려고합니다.

from my_module import my_class 

my_class.my_function(...) 
# bla bla bla 

편집 : 나는 당신이 그런 짓을하는 것이 좋습니다은 파이썬은 사용하지 않을 생각 "-"함수 이름에.

+0

당신은 my_class.my_function()을 의미합니다 –

+0

@JanVorcak 감사합니다. – juliomalegria

+0

감사합니다. 그러나 클래스가 사용되었으므로이 작업을 수행 할 수 없습니다. 그럼에도 불구하고 그것을 시도했지만 그 접근 방식은 모듈이 없으면 실패합니다. –

4

클래스 내부의 함수를 메서드라고합니다. 그 방법은 당신이 module.Classname.method()으로 호출 할 수 없습니다 방법 전화 발신 StaticMethod를 또는 classmethod, 의 특별한 종류가 아닌 당신은, 그러나

import module 
module.Classname.method 

와 다른 모듈에서 액세스 할 수 있습니다.

inst=module.Classname(...) 

다음 클래스 인스턴스에서 메서드를 호출 : : 당신이 수신 된

inst.method() 

이유

대신 클래스의 인스턴스를 만들 필요 것 오류

AttributeError: 'module' object has no attribute 'function_name' 

module의 네임 스페이스에 function_name이라는 변수가 없기 때문입니다. 그러나 Classname이라는 변수가 있습니다. 한편 Classname에는 해당 네임 스페이스에 function_name이라는 변수가 있습니다. 메서드에 액세스하려면 module.Classname.function_name이라는 두 가지 속성 조회를 수행하여 function_name으로 "내려 보내야합니다."

+1

덕분에 여기 정적 메서드를 만들고 팩토리 패턴을 사용하여 액세스하려고합니다. –

+0

http://dirtsimple.org/2004/12/python-is-not-java.html을 읽고 싶을 수도 있습니다. –

0

dir() 함수를 사용하여 함수가 실제로 예상대로 존재하는지 확인할 수 있습니다.

예제 math 모듈 사용 :

>>> import math 
>>> dir(math) 
['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] 
관련 문제