TypeError 해결: Python에서 모듈 객체를 호출할 수 없음

Fariba Laiq 2023년6월21일
  1. Python에서 TypeError: 'module' 개체를 호출할 수 없습니다의 원인
  2. Python에서 TypeError: 'module' object is not callable 해결
TypeError 해결: Python에서 모듈 객체를 호출할 수 없음

모든 프로그래밍 언어에는 많은 오류가 발생합니다. 일부는 컴파일 타임에, 일부는 런타임에 발생합니다.

이 문서에서는 TypeError: 'module' 개체를 호출할 수 없습니다에 대해 설명합니다. 이 오류는 class/methodmodule이 동일한 이름을 가질 때 발생합니다. 우리는 같은 이름 때문에 그들 사이를 혼동합니다.

메서드가 아닌 모듈을 가져올 때 해당 모듈을 호출하면 모듈을 호출할 수 없기 때문에 오류가 발생합니다. 메서드만 호출할 수 있습니다.

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.
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

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