Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

AttributeError: 'tuple' object has no attribute 'introduce'

#python #классы


Есть два объекта, при передаче их в for и вызове метода класса, в терминал выкидывается
ошибка - AttributeError: 'tuple' object has no attribute 'introduce'. С чем это может
быть связано?

class Personal_Data:
       def __init__(self, name, surname, phone_number):
           self.name = name
           self.surname = surname
           self.phone_number = phone_number

       def introduce(self):
           print("Имя: {0}, Фамилия: {1}, Номер телефона       {2}".format(self.name,
self.surname, self.phone_number))

Vasiliy = Personal_Data('Vasiliy', 'Valakas', '88005553535'),
Ivan = Personal_Data('Ivan', 'Ivanov', '88005553535')
members = [Vasiliy, Ivan]

print("Что можно сделать: Посмотреть контакты (наберите 'контакты'), Добавить новый
контакт ('добавить'), Удалить контакт ('удалить')")

void = input("Что будем делать --> ")
if void != void.lower():
  void = void.lower() # Если в строке есть символы с верхним регистром, то они переводятся
в нижний 

if void == 'контакты':
  for member in members:
    member.introduce()

    


Ответы

Ответ 1



Ошибка вызвана запятой в конце следующей строки: Vasiliy = Personal_Data('Vasiliy', 'Valakas', '88005553535'), Пример: In [133]: a = 1, In [134]: a Out[134]: (1,) In [135]: type(a) Out[135]: tuple

Ответ 2



Все дело в запятой: Vasiliy = Personal_Data('Vasiliy', 'Valakas', '88005553535'), # <-- Ivan = Personal_Data('Ivan', 'Ivanov', '88005553535') которая превращает одиночный объект в tuple. print(Vasiliy) выведет (<__main__.Personal_Data object at 0x7fcf9736e780>,) Уберите запятую, и все заработает как надо.

Ответ 3



Нужно убрать запятую в конце строчки с Василием.

Ответ 4



В конце 10 строки,где ты создал объект valiliy лишняя запятая.Будь внимательнее)

Комментариев нет:

Отправить комментарий