2012-05-22 6 views
2

에 대한 내 간단한 프로그램에서 호출 할 수 없습니다.형식 오류 :</p> <pre><code>main.py fib/ __init__.py fib.py hello.py </code></pre> <p><code>fib.py</code> 정의 함수 <code>fib()</code>, <code>hello.py</code> 기능 <code>hello()</code>을 정의 : '모듈'개체가이 내 파이썬 모듈 파이썬 모듈

Traceback (most recent call last): 
    File "tes.py", line 5, in <module> 
    hello() 
TypeError: 'module' object is not callable 
:

main.py

from fib import * 
hello() 

__init__.py 내가 main.py 그것을 인쇄를 실행 내가 작업

만을위한 practice.Not이 코드를 작성

__all__ = ["fib", "hello"] 

입니다

왜? 난 당신이 from fib import * 라인과 hello 모듈을 가져온 __all__

+2

나를 따라하기 : 파이썬은 자바가 아닙니다. –

답변

6

에 목록 인사를했지만, 해당 모듈의 hello 기능을 참조하지 않습니다.

대신이 작업을 수행 :

from fib import * 
hello.hello() 

나이 : 당신은 모듈이 아닌 방법을 가져

from fib.hello import * 
hello() 
2

. 아마도 hello.hello()을해야 할 것입니다. 만 from fib import * 사용 후 hello()에 액세스하려면

hello.hello() 
2

당신이 그것을에 모듈이 아닌 기능을 가져 오기 때문에, 당신이 시도 할 수있다

fibhello 함수를 최상위 레벨 fib 모듈로 가져옵니다. 이렇게하면 from fib import *으로 전화 할 때 함수hello()이 현재 구현 된대로 모듈hello이 아닌 네임 스페이스에 포함됩니다.

1

을, 당신이 당신의 __init__.py 파일을 대체해야합니다 :

from hello import hello 
from fib import fib 

__all__ = ['fib', 'hello']