TypeError 해결: Python에서 모듈 객체를 호출할 수 없음
-
Python에서
TypeError: 'module' 개체를 호출할 수 없습니다
의 원인 -
Python에서
TypeError: 'module' object is not callable
해결
모든 프로그래밍 언어에는 많은 오류가 발생합니다. 일부는 컴파일 타임에, 일부는 런타임에 발생합니다.
이 문서에서는 TypeError: 'module' 개체를 호출할 수 없습니다
에 대해 설명합니다. 이 오류는 class/method
와 module
이 동일한 이름을 가질 때 발생합니다. 우리는 같은 이름 때문에 그들 사이를 혼동합니다.
메서드가 아닌 모듈을 가져올 때 해당 모듈을 호출하면 모듈을 호출할 수 없기 때문에 오류가 발생합니다. 메서드만 호출할 수 있습니다.
Python에서 TypeError: 'module' 개체를 호출할 수 없습니다
의 원인
다음 코드에서 내장 모듈 socket
을 가져옵니다. 이 모듈에는 socket()
이라는 클래스가 포함되어 있습니다.
여기서 메서드 이름과 클래스 이름은 동일합니다. socket
만 가져오고 호출하면 인터프리터에서 TypeError: 'module' object is not callable
이 발생합니다.
예제 코드:
# Python 3.x
import socket
socket()
출력:
#Python 3.x
Traceback (most recent call last):
File "<string>", line 2, in <module>
TypeError: 'module' object is not callable
자체적으로 정의한 사용자 정의 모듈의 경우에도 이 오류에 직면할 수 있습니다. 다음 코드를 생성하여 infomodule.py
라는 파일에 저장했습니다.
예제 코드:
# Python 3.x
def infomodule():
info = "meeting at 10:00 am."
print(info)
그런 다음 다른 Python 파일을 만들고 infomodule.py
모듈을 호출하는 다음 코드를 작성했습니다. TypeError: 'module' object is not callable
이 표시됩니다.
예제 코드:
# Python 3.x
import infomodule
Print(infomodule())
출력:
#Python 3.x
Traceback (most recent call last):
File "mycode.py", line 3, in <module>
print(infomodule())
TypeError: 'module' object is not callable
Python에서 TypeError: 'module' object is not callable
해결
모듈에서 메서드/클래스 호출
이 오류를 수정하기 위해 모듈을 직접 가져오는 대신 모듈에서 클래스를 가져올 수 있습니다. TypeError : module object is not callable
을 수정합니다.
여기에서 socket
클래스의 객체를 성공적으로 생성했습니다.
예제 코드:
# Python 3.x
import socket
socket.socket()
출력:
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
커스텀 모듈의 경우에도 유사하게 오류를 수정할 수 있습니다. 여기에서 infomodule
모듈의 infomodule()
메서드를 호출했습니다.
예제 코드:
import infomodule
print(infomodule.infomodule())
출력:
meeting at 10:00 am.
모듈에서 메서드/클래스 가져오기
이 오류를 수정하는 또 다른 방법은 모듈에서 클래스를 가져와 해당 개체를 만드는 것입니다.
여기에서는 socket
모듈에서 socket
클래스를 가져와 객체를 만들었습니다.
예제 코드:
# Python 3.x
from socket import socket
socket()
출력:
<socket.socket fd=876, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
사용자 정의 모듈의 경우에도 동일한 절차를 따릅니다. 여기서는 모듈에서 메서드를 가져와서 호출했습니다.
예제 코드:
# Python 3.x
from infomodule import infomodule
print(infomodule())
출력:
meeting at 10:00 am.
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.