Объясните возникновение ошибки AttributeError

Здравствуйте.
Не понимаю, почему вылазит ошибка. Надеюсь, кто-нибудь объяснит.
Код довольно понятный, полагаю, в комментировании не нуждается
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
class Workers(): def __init__(self , ID , name): self.ID = ID self.name = name def count_salary(self): return FullWorker.ID class FullWorker(Workers): def __init__(self , ID , name , stavka): self.ID = ID self.name = name self.stavka = stavka class HourWorker(Workers): def __init__(self , ID , name , stavka): self.ID = ID self.name = name self.stavka = stavka worker1 = FullWorker(1 , "Ivanov" , 1800) worker1.count_salary()
На выходе следующая ошибка:
Кликните здесь для просмотра всего текста
Traceback (most recent call last):
File «C:/Python34/test.py», line 26, in
worker1.count_salary()
File «C:/Python34/test.py», line 8, in count_salary
return FullWorker.ID
AttributeError: type object ‘FullWorker’ has no attribute ‘ID’
AttributeError
Исключение, возникающее в ходе обращения к атрибуту объекта.
Возбуждается в случаях ошибок доступа к атрибуту, либо его установки.
my_str = 'my'
no_attr = my_str.noattr # AttributeError: 'str' object has no attribute 'noattr'
my_str.noattr = 10 # AttributeError: 'str' object has no attribute 'noattr'
На заметку
Когда объект не поддерживает доступ к атрибуту или его установку вовсе, поднимается TypeError.
Синонимы поиска: AttributeError
Исключения наследуемые от Exception
Следующие исключения являются исключениями, которые обычно возникают во время исполнения программы.
Содержание:
- Исключение StopIteration
- Исключение StopAsyncIteration
- Исключение ArithmeticError
- Исключение AssertionError
- Исключение AttributeError
- Исключение BufferError
- Исключение EOFError
- Исключение ImportError
- Исключение ModuleNotFoundError
- Исключение IndexError
- Исключение KeyError
- Исключение UnboundLocalError
- Исключение NotImplementedError
- Исключение RecursionError
- Исключение IndentationError
- Исключение TabError
StopIteration :
Исключение StopIteration вызывается встроенной функцией next() и методом итератора __next__() , чтобы сигнализировать, что итератор больше не производит никаких элементов.
Объект исключения имеет единственный атрибут value , который задается в качестве аргумента при создании исключения и по умолчанию равен None .
Когда функция генератора или сопрограммы возвращается, создается новый экземпляр StopIteration , и значение, возвращаемое функцией, используется в качестве параметра value для конструктора исключения.
Если код генератора прямо или косвенно поднимает StopIteration , он преобразуется в RuntimeError , сохраняя StopIteration как причину нового исключения.
StopAsyncIteration :
Исключение StopAsyncIteration вызывается методом __next__() объекта асинхронного итератора, чтобы остановить итерацию.
ArithmeticError :
AssertionError :
Исключение AssertionError вызывается когда оператор assert терпит неудачу.
AttributeError :
Исключение AttributeError вызывается при сбое ссылки на атрибут или присвоения. Если объект не поддерживает ссылки на атрибуты или назначения атрибутов вообще, вызывается TypeError .
BufferError :
Исключение BufferError вызывается когда операция, связанная с буфером, не может быть выполнена.
EOFError :
Исключение EOFError вызывается когда функция input() попадает в состояние конца файла без чтения каких-либо данных. Когда методы io.IOBase.read() and io.IOBase.readline() возвращают пустую строку при попадании в EOF.
ImportError :
Исключение ImportError вызывается когда оператор import имеет проблемы при попытке загрузить модуль. Также ImportError поднимается, когда “из списка» в конструкция from . import имеет имя, которое не может быть найдено.
Атрибуты name и path можно задать с помощью аргументов конструктора, содержащих только ключевые слова. При установке они представляют имя модуля, который был предпринят для импорта, и путь к любому файлу, который вызвал исключение, соответственно.
ModuleNotFoundError :
LookupError :
Исключение LookupError — базовый класс для исключений, возникающих при недопустимости ключа или индекса, используемого в сопоставлении или последовательности: IndexError , KeyError . Исключение LookupError может быть вызван непосредственно codecs.lookup() .
IndexError :
KeyError :
MemoryError :
Исключение MemoryError вызывается, когда операции не хватает памяти, но ситуация все еще может быть спасена путем удаления некоторых объектов. Значение представляет собой строку, указывающую какой внутренней операции не хватило памяти. Обратите внимание, что из-за базовой архитектуры управления памятью интерпретатор не всегда может полностью восстановиться в этой ситуации. Тем не менее, возникает исключение, чтобы можно было напечатать трассировку стека.
NameError :
Исключение NameError вызывается, когда локальное или глобальное имя не найдено. Значение — это сообщение об ошибке, содержащее имя, которое не удалось найти.
UnboundLocalError :
OSError :
Описание исключения OSError и его подклассов смотрите в разделе «Ошибки операционной системы»
ReferenceError :
Исключение ReferenceError вызывается, когда слабый эталонный прокси-сервер, созданный функцией weakref.proxy() используется для доступа к атрибуту референта после сбора его мусора.
RuntimeError :
Исключение RuntimeError вызывается при обнаружении ошибки, которая не попадает ни в одну из других категорий. Связанное значение является строкой, указывающей, что именно пошло не так.
NotImplementedError :
- Его не следует использовать для указания того, что оператор или метод вообще не предполагается поддерживать — в этом случае либо оставьте оператор/метод неопределенным, либо, установите его в None.
- NotImplementedError и NotImplemented не являются взаимозаменяемыми, даже если они имеют схожие имена и цели. Смотрите подробности NotImplemented о том, когда его использовать.
RecursionError :
SyntaxError(message, details) :
Исключение SyntaxError вызывается, когда синтаксический анализатор обнаруживает синтаксическую ошибку. Ошибка данного типа может произойти в инструкции import , при вызове встроенной функции exec() или eval() , или при чтении первоначального сценария или стандартный ввода, также в интерактивном режиме.
Функция str() экземпляра исключения возвращает только сообщение об ошибке message . Аргумент details — это кортеж, элементы которого также доступны как отдельные атрибуты.
- filename : Имя файла, в котором произошла синтаксическая ошибка.
- lineno : Номер строки в файле, в котором произошла ошибка. Это индексация 1: первая строка в файле имеет номер строки, равный 1.
- offset : Столбец в строке, где произошла ошибка. Это индексация 1: первый символ в строке имеет смещение 1.
- text : Текст исходного кода, связанный с ошибкой.
- end_lineno : Номер строки в файле, на которой произошедшая ошибка заканчивается. Индексирование начинается с 1: первая строка в файле имеет номер строки, равный 1.
- end_offset : Столбец в конце строки, где произошедшая ошибка заканчивается. Индексирование начинается с 1: первый символ в строке имеет смещение 1.
Для ошибок в полях f-строки перед сообщением ставится префикс «f-string:«, а смещения представляют собой смещения в тексте, составленном из выражения замены. Например, компиляция f’Bad field’ приводит к следующему атрибуту args : (‘f-string: …’, (‘’, 1, 2, ‘(a b)n’, 1, 5)) .
Изменено в версии 3.10: Добавлены атрибуты end_lineno и end_offset .
IndentationError :
TabError :
SystemError :
Исключение SystemError вызывается, когда интерпретатор обнаруживает внутреннюю ошибку, но ситуация не выглядит настолько серьезной, чтобы заставить его отказаться от всякой надежды. Ассоциированное значение — это строка, указывающая, что пошло не так (в терминах низкого уровня).
TypeError :
Исключение TypeError вызывается, когда операция или функция применяется к объекту неподходящего типа. Связанное значение представляет собой строку, содержащую сведения о несоответствии типов.
Исключение TypeError может быть вызвано пользовательским кодом, чтобы указать, что попытка выполнения операции над объектом не поддерживается и не должна поддерживаться. Если объект предназначен для поддержки данной операции, но еще не предоставил реализацию, то вызывайте исключение NotImplementedError .
Передача аргументов неправильного типа, например передача списка, когда ожидается целое число, должна привести к TypeError , но передача аргументов с неправильным значением, например число вне ожидаемых границ, должна привести к ValueError .
ValueError :
Исключение ValueError вызывается, когда операция или функция получает аргумент, который имеет правильный тип, но недопустимое значение, и ситуация не описывается более точным исключением, таким как IndexError .
UnicodeError :
Описание исключения UnicodeError и его подклассов смотрите в разделе «Ошибки Unicode»
EnvironmentError :
Доступно только в Windows.
IOError :
Доступно только в Windows.
WindowsError :
Доступно только в Windows.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Иерархия встроенных исключений
- Базовые классы исключений
- Исключения, наследуемые от BaseException
- Исключения наследуемые от Exception
- Арифметические ошибки: ArithmeticError
- Исключения ExceptionGroup и BaseExceptionGroup
- Исключения операционной системы: OSError
- Категория исключений: Warning
- Ошибка кодировки: UnicodeError
Как устранить ошибку AttributeError на питоне?

Вы создали объект класса list, например как-то a = [1,2,3]
А потом пытаетесь сделать что-то вроде этого a.read().
Такого метода нет в списках (list), поэтому выдает ошибку.Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ваш ответ на вопросВойдите, чтобы написать ответ

- Python
- +1 ещё
Error Connecting: HTTPSConnectionPool(host=’url’, port=443) как решить?
- 1 подписчик
- 3 часа назад
- 10 просмотров