Найти - Пользователи
Полная версия: Вопрос по наследованию классов
Начало » Python для новичков » Вопрос по наследованию классов
1
Karalov86
В моём коде происходит наследование базового класса, и через метод 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)
4kpt_IV
Если в __str__ нужен name и __str__ универсален, т.е. необходим для наследования, тогда name должен быть и в unit. Иначе просто определите свой __str__ в human.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB