Методы экземпляра класса и с чем их едят(Python 3.6.9)

JustV

Новичок
Пользователь
Дек 15, 2020
3
0
1
Здравствуйте,
уважаемые гуру и знатоки,
я только новичок, пытаюсь разобраться в ООП, информацию беру из интернета, реже из доков; пытаюсь разобраться как использовать методы класса(код ниже); почему интерпретатор
Python:
from datetime import datetime

class Tovar:
  def __init__(self, name, price, year_of_issue):
      self.name = name
      self.price = price
      self.year_of_issue = year_of_issue
      #конструктор
  def opredelit_vozrast_tovara(self):
      current_datetime = datetime.now().date()
      self.opredelit_vozrast_tovara = current_datetime - self.year_of_issue
      return (self.opredelit_vozrast_tovara)   
#метод экземпляра 1, определяет возраст товара
  def podorojanie_tv(self):
      if (("TV" in name) == True):
        self.podorojanie_tv = self.price * 0.2
      return (self.podorojanie_tv)   
#метод экземпляра 2, повышает цену телевизоров   
      
                              
tovar = Tovar(input("Введите наименование: "), int(input("Введите цену: ")), int(input("Введите год выпуска: ")))
tovar.opredelit_vozrast_tovar()
tovar.podorojanie_tv()
1608045863118.png
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 646
472
83
def opredelit_vozrast_tovara(self): а вы пишите tovar.opredelit_vozrast_tovar()
буковку а в конце забыли...
и у вас не заработает все равно будет новая ошибка вот такая TypeError: unsupported operand type(s) for -: 'datetime.date' and 'int'
вам нужно значение self.year_of_issue перевести в дату если вы хотите получить в результате дату...
if (("TV" in name) == True): не нужно сравнивать с true, так как если 'tv' есть в name, то результат будет true и условие выполниться, так условие истинно, сравнение с true за вас сделает питон...
и да тут ошибка if (("TV" in name) == True):, нужно if (("TV" in self.name) == True):
и не нужно переопределять имена методов внутри этих методов, вы можете получить не определенное поведение...

вроде все...

вот так например работает
Python:
from datetime import datetime


class Tovar:
    def __init__(self, name, price, year_of_issue):
        self.name = name
        self.price = price
        self.year_of_issue = year_of_issue
        # конструктор

    def opredelit_vozrast_tovara(self):
        self.vozrast_tovara = datetime.now().date() - self.year_of_issue
        return self.vozrast_tovara

    # метод экземпляра 1, определяет возраст товара
    def podorojanie_tv(self):
        if "TV" in self.name:
            self.podorojanie = self.price * 0.2
            return self.podorojanie
        else:
            pass
    # метод экземпляра 2, повышает цену телевизоров


tovar = Tovar(input("Введите наименование: "), int(input("Введите цену: ")),
              datetime.strptime(input("Введите год выпуска: "), '%Y-%m-%d').date())
print(tovar.opredelit_vozrast_tovara())
print(tovar.podorojanie_tv())
 
Последнее редактирование:
  • Мне нравится
Реакции: JustV

JustV

Новичок
Пользователь
Дек 15, 2020
3
0
1
regnor
Спасибо Вам огромное, что уделили немного времени на мой вопрос и все ошибки расписали.
От всей души желаю Вам всего хорошего!
 

Форум IT Специалистов