Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2017 12:29:07

Karalov86
Зарегистрирован: 2016-06-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по наследованию классов

В моём коде происходит наследование базового класса, и через метод super класс потомок human использует методы класса родителя unit. При этом в методе __init__ потомка, необходимо прописывать аргумент name класса родителя , а в __str__ не надо, поскольку в __str__ не создаются атрибуты. Мой вопрос в том можно ли как то обойтись, без указания в методе __init__ атрибута name родительского класса, при этом всё равно его использовать, что бы каждый раз не прописывать. Может какой то другой путь?

 class unit (object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        ver = self.name
        return ver
class human (unit):
    def __init__(self, name, family):
        super(human, self).__init__(name)
        self.family = family
    def __str__(self):
        ver =  super(human, self).__str__()  + " " + self.family
        return ver
  
human1 = human("Иван", "Петров")
print(human1)

Отредактировано Karalov86 (Янв. 15, 2017 12:33:40)

Офлайн

#2 Янв. 15, 2017 12:33:47

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Вопрос по наследованию классов

Если в __str__ нужен name и __str__ универсален, т.е. необходим для наследования, тогда name должен быть и в unit. Иначе просто определите свой __str__ в human.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version