2011-03-29 1 views
1

는 내가 pyupnp 패키지 (http://code.google.com/p/pyupnp/)python 패키지를 사용하는 방법 - __all__에 나열된 항목에 액세스 할 수 없어야합니까?

내가 만든 한을 사용하려고하고 그것을 설치하고 내 코드에서 내가 가진 해요 :

import pyupnp 
b = pyupnp.UpnpBase() 
... 

는하지만이 오류를 얻을 : AttributeError를 '모듈'개체에는 속성이 없습니다 'UpnpBase'

이제

나는 패키지의 코드를 살펴했고, 그 다음이 있습니다

__all__ = [ 
    'UpnpNamespace', 
    'UpnpDevice', 
    'UpnpBase', 
    ... 

__all__ 목록에있는 항목에 액세스 할 수 있다고 생각 했습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

덕분에 너무 많은

답변

3

이 패키지를 보면, 당신은 pyupnp.upnp하지 pyupnp을 가져와야합니다. __all__의 내용은 여기서 관련이 없습니다.

+1

추가 설명 - 모듈을 가져올 때 모듈에 정의 된 이름에 대해'__all__'의 내용을 검사하지 않습니다. 오히려 그것들은'some_module import *'형식으로 사용될 때 그 이름들에 대한 필터입니다. 이것은'__all__'에 나열된 것들만 가져올 것이지만 반드시 모든 것을 가져 오는 것은 아닙니다. 나는 종종 리팩토링하고 업데이트하는 것을 잊어 버렸을 때 내'__all__'s가 시대에 뒤진 것을 발견합니다. – dcrosta

관련 문제