Форум сайта python.su
В моём коде происходит наследование базового класса, и через метод 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)
Офлайн
Если в __str__ нужен name и __str__ универсален, т.е. необходим для наследования, тогда name должен быть и в unit. Иначе просто определите свой __str__ в human.
Офлайн