Рубрики
Без рубрики

[Решено] Типерре: «Модуль» объект не Callable в Python

Обзор Цель: Целью данной статьи является обсуждение и исправления ISEError: «Модуль» Объект не Callable в Python. Мы будем использовать многочисленные иллюстрации и методы для решения проблемы упрощенным образом. Пример 1: # Пример «Объект типа»: «Модуль» не вызывает Callable Import DateTime # Modele Module DEF TEST_DATE (): # … [Решено] Типеррера: «Модуль» Объект не Callable в Python Подробнее »

Автор оригинала: Shubham Sayon.

Обзор

Цель: Цель этой статьи – обсудить и исправить TypeError: «Модуль» объект не вызывается в питоне. Мы будем использовать многочисленные иллюстрации и методы для решения проблемы упрощенным образом.

Пример 1. :

# Example of TypeError:'module' object is not callable
import datetime  # importing datetime module


def tell_date():  # Method for displaying today's date
    return datetime()


print(tell_date())

Выход:

Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 9, in 
    print(tell_date())
  File "D:/PycharmProjects/PythonErrors/rough.py", line 6, in tell_date
    return datetime()
TypeError: 'module' object is not callable

Теперь вышеупомянутый выход приводит нас к нескольким вопросам. Давайте посмотрим на них один за другим.

☠ Что такое типа в Python?

Типеррор является одним из наиболее распространенных исключений в Python. Вы столкнетесь с Исключение типа «Типерре» В Python всякий раз, когда есть несоответствие в типов объектов в определенной работе. Это обычно происходит, когда программисты используют неверные или неподдерживаемые типы объектов в своей программе.

Пример: Посмотрим, что произойдет, если мы попытаемся объединить ул ...| объект с int объект:

# Concatenation of str and int object
string = 'Nice'
number = 1
print(string + number)

Выход:

Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 4, in 
    print(string + number)
TypeError: can only concatenate str (not "int") to str

Объяснение:

В приведенном выше примере мы можем ясно видеть, что Исключение типа «Типерре» произошло потому, что мы можем только объединять ул ...| другому ул …| Объект и не к любому другому типу объекта (например, int , float , etc .)

  • « + «Оператор может объединить ул ...| (строки) объекты. Но в случае int (целые числа), он используется для добавления. Если вы хотите насильственно выполнять конкатенацию в приведенном выше примере, вы можете легко сделать это, напечатавшись на
  • int объект к ул …| тип.

📖 Читайте здесь: Как исправить JypeError: Список индексов должен быть целыми числами или ломтиками, а не «STR»?

Итак, от предыдущих иллюстраций у вас есть четкое представление о Типеррор Отказ Но что делает исключение TypeError: «Модуль» объект не вызывается иметь в виду?

🐞 Типеррера: «Модуль» объект не вызывается

Python обычно предоставляет сообщение с поднятыми исключениями. Таким образом, Исключение типа «Типерре» Есть сообщение Объект «Модуль» не является Callable , что означает, что вы пытаетесь вызвать объект модуля вместо класса или объекта функции внутри этого модуля.

Это происходит, если вы попытаетесь вызвать объект, который не вызывается. Callable объект может быть классом или методом, который реализует __вызов__ «Метод. Причина этого может быть (1) Путаница между именем модуля и именем класса/функции внутри этого модуля или (2) неверный класс или вызов функции.

Причина 1 : Давайте посмотрим на примере первой причины, то есть Путаница между именем модуля и именем класса/функции Отказ

  • Пример 2 : Рассмотрим следующий пользовательский модуль – решить .py :
# Defining solve Module to add two numbers
def solve(a, b):
    return a + b

Теперь давайте попробуем импортировать вышеуказанный пользовательский модуль в нашей программе.

import solve

a = int(input('Enter first number: '))
b = int(input('Enter second number: '))
print(solve(a, b))

Выход:

Enter first number: 2
Enter second number: 3
Traceback (most recent call last):
  File "main.py", line 6, in 
    print(solve(a, b))
TypeError: 'module' object is not callable

Объяснение: Здесь пользователь запутался между именем модуля и именем функции, так как они оба являются точно такими же, I.e. ‘ решить ‘.

Причина 2 : Теперь, давайте обсудим еще один пример, который демонстрирует следующую причину, то есть неправильный класс или звонок функции.

Если мы выполним неверный импорт или функциональную операцию вызова, то мы, вероятно, снова станем исключением. Ранее в примере, приведенном в обзоре, мы сделали неверный вызов, позвонив datetime Объект модуля вместо объекта класса, который поднял TypeError: «Модуль» объект не вызывается исключением.

Теперь, когда мы успешно прошли причины, которые приводят к возникновению нашей проблемы, давайте найдем решения для его преодоления.

📚 Как исправить TypeError: «Модуль» объект не вызывается ?

🖊️ Метод 1: Изменение оператора «Импорт»

Для исправления первой проблемы, которая является путаницей между именем модуля и именем класса/функции, позвольте нам пересмотреть Пример 2 Отказ Здесь модульрешить У также есть Метод назван «RELVE» , таким образом создавая путаницу.

Чтобы исправить это, мы можем просто изменить оператор импорта, импортируя конкретную функцию внутри этого модуля или просто импортируя все классы и методы внутри этого модуля.

# importing solve module in Example 2
from solve import solve

a = int(input('Enter first number: '))
b = int(input('Enter second number: '))
print(solve(a, b))

Выход:

Enter first number: 2
Enter second number: 3
5

📝 Примечание:

  • Импорт всех классов и методов рекомендуется только в том случае, если размер импортируемого модуля небольшой, поскольку он может повлиять на временную и космическую сложность программы.
  • Вы также можете использовать псевдоним, используя подходящее имя, если у вас все еще есть путаница.
    • Например: – от решающего импорта решить как соль

🖊️ Метод 2: Использование. (Точка) нотация для доступа к классам/методам

Есть еще одно решение для той же проблемы. Вы можете получить доступ к атрибутам, классам или методам модуля, используя «.» Оператор. Поэтому вы можете использовать то же самое, чтобы исправить нашу проблему.

Давайте попробуем это снова на нашем примере 2.

# importing solve module in Example 2
import solve

a = int(input('Enter first number: '))
b = int(input('Enter second number: '))
print(solve.solve(a, b))

Выход:

Enter first number: 2
Enter second number: 3
5

🖊️ Метод 3: Реализация правильного вызова класса или функции

Теперь давайте обсудим решение второй причине нашей проблемы, то есть, если мы выполним неверный класс или вызов функции. Любая ошибка в реализации вызова может привести к тому, что может вызвать Ошибки в программе. Пример 1 имеет точно такую же проблему неправильного вызова функции, который поднял исключение.

Мы можем легко решить проблему, заменив неверное оператор вызовов с помощью правильного, как показано ниже:

import datetime  # importing datetime module
def tell_date():  # Method for displaying today's date
    return datetime.date.today()
print(tell_date())

Выход:

2021-03-24

💰 Бонус

Вышеупомянутое Типеррор происходит из-за многочисленных причин. Давайте обсудим некоторые из этих ситуаций, которые приводят к возникновению аналогичного вида Типеррор Отказ

✨ JypeError ISERROR: объект «Список» не вызывается

Эта ошибка возникает, когда мы пытаемся вызвать объект «списка», а вы используете «()» вместо использования «[]».

Пример:

collection = ['One', 2, 'three']
for i in range(3):
    print(collection(i))  # incorrect notation

Выход:

Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 3, in 
    print(collection(i))  # incorrect notation
TypeError: 'list' object is not callable

Решение: Чтобы исправить эту проблему, нам нужно использовать правильный процесс доступа к элементам списка I.e, используя «[]» (квадратные скобки). Так просто! 😉.

collection = ['One', 2, 'three']
for i in range(3):
    print(collection[i])  # incorrect notation

Выход:

One
2
three

✨ Типеррера: «INT» Объект не Callable

Это еще одна общая ситуация, когда пользователь призывает int объект и заканчивается с Типеррор Отказ Вы можете столкнуться с этой ошибкой в сценариях, таких как следующее:

Объявление переменной с именем функции, которая вычисляет целочисленные значения

Пример:

# sum variable with sum() method
Amount = [500, 600, 700]
Discount = [100, 200, 300]
sum = 10
if sum(Amount) > 5000:
    print(sum(Amount) - 1000)
else:
    sum = sum(Amount) - sum(Discount)
    print(sum)

Выход:

Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 5, in 
    if sum(Amount)>5000:
TypeError: 'int' object is not callable

Решение: Чтобы исправить эту проблему, мы можем просто использовать другое имя для переменной вместо сумма Отказ

#sum variable with sum() method
Amount = [500, 600, 700]
Discount = [100, 200, 300]
k = 10
if sum(Amount)>5000:
    print(sum(Amount)-1000)
else:
    k = sum(Amount)-sum(Discount)
    print(k)

Выход:

1200

Вывод

Мы наконец достигли конца этой статьи. Фу! Это было некоторое обсуждение, и я надеюсь, что это помогло вам. Пожалуйста, Подписаться и Оставайтесь настроиться Для более интересных учебных пособий.

Спасибо Anirban Chatterjee Для того, чтобы помочь мне с этой статьей!

  • Вы хотите быстро освоить самые популярные Python IDE?
  • Этот курс приведет вас от новичка к эксперту в Пычарме в ~ 90 минут.
  • Для любого разработчика программного обеспечения имеет решающее значение для освоения IDE хорошо, писать, тестировать и отлаживать высококачественный код с небольшим усилием.

Присоединяйтесь к Pycharm MasterClass Сейчас и мастер Pycharm на завтра!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: