>  기사  >  백엔드 개발  >  \"속성 오류: \'모듈\' 개체에 [중복] 속성이 없습니다.\"가 발생하는 이유는 무엇입니까?

\"속성 오류: \'모듈\' 개체에 [중복] 속성이 없습니다.\"가 발생하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-20 12:55:02726검색

Why does

"AttributeError: 'module' object has no attribute [duplicate]": 종합 안내서

이 오류는 Python 모듈이 시도할 때 발생합니다. 존재하지 않는 속성에 액세스합니다. 특정 경우 오류는 "AttributeError: 'module' object has no attribute 'hi'"입니다. 이 오류는 가져오는 모듈(b.py)에 'hi'라는 함수가 없음을 나타냅니다.

상호 최상위 가져오기 이해

a.py와 b.py 사이에 상호 최상위 가져오기가 있기 때문에 문제가 발생합니다. 이는 순환 가져오기 및 기타 문제로 이어질 수 있으므로 일반적으로 권장되지 않습니다.

문제 해결

이 오류를 수정하고 상호 가져오기를 방지하려면 가져오기를 수행하면 됩니다. 함수 내의 모듈은 다음과 같습니다.

b.py에서:

<code class="python">def cause_a_to_do_something():
    import a
    a.do_something()</code>

a.py에서:

<code class="python">import b

def hello():
    print("hello")

print("a.py")
print(hello())
b.cause_a_to_do_something()</code>

이렇게 하면 a.py가 안전하게 b.py를 가져오고 오류 없이 해당 기능을 호출할 수 있습니다.

가져오기 최적화

비효율적으로 보일 수도 있지만 함수 내에서 가져오기는 실제로는 그렇지 않습니다. Python은 가져온 모듈을 캐시하므로 가져오기 작업은 함수를 처음 호출할 때만 수행됩니다. 후속 가져오기는 빠른 작업입니다.

위 내용은 \"속성 오류: \'모듈\' 개체에 [중복] 속성이 없습니다.\"가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.