Справочник · ошибки Python

AttributeError

У значения нет такого метода или свойства: опечатка в названии или значение другого типа, чем ожидалось.

Python пишет ошибку в последней строке сообщения: сначала название, после двоеточия — подробности. Найди своё сообщение ниже — рядом объяснение простыми словами и что исправить.

В модуле нет такой команды

AttributeError: module 'random' has no attribute 'randomint'
Что случилось
В модуле random нет команды randomint.
Почему так бывает
Скорее всего, опечатка. Большие и маленькие буквы важны: randint пишется маленькими.
Как исправить
Проверь название команды по памятке.

Разбираем в уроке 3.6 «Случайность».

Это значение менять нельзя

AttributeError: property 'x' of 'x' object has no setter
Что случилось
У этого атрибута нет метода для записи.
Почему так бывает
Атрибут сделан через @property только для чтения. Менять его напрямую Python не разрешает.
Как исправить
Измени данные, из которых он считается, или добавь метод с декоратором имя.setter.

Разбираем в уроке 9.6 «Скрытое и особое».

Родитель не вызван

class Animal:
    def __init__(self, name):
        self.name = name

class Dog(Animal):
    def __init__(self, name, tricks):
        self.tricks = tricks

dog = Dog("Шарик", 3)
print(dog.name)
Python сообщает об ошибке
AttributeError: 'Dog' object has no attribute 'name'
Что случилось
У объекта класса x нет атрибута name.
Почему так бывает
У x свой __init__, и он не вызвал __init__ родителя. Поэтому атрибуты родителя не появились.
Как исправить
Первой строчкой в своём __init__ напиши super().__init__(...) с нужными значениями.

Разбираем в уроке 9.5 «Наследование».

Нет такого атрибута или команды

class Cat:
    def __init__(self, name):
        name = name

cat = Cat("Бит")
print(cat.name)
Python сообщает об ошибке
AttributeError: 'Cat' object has no attribute 'name'
Что случилось
У значения типа Cat нет «name».
Почему так бывает
Скорее всего, опечатка в названии. Или у этого вида значений такого нет: append есть у списков, а у текста нет.
Как исправить
Проверь название и вид значения.

Разбираем в уроке 4.2 «Меняем список».

Другие ошибки