Как сделать класс наследник python

В этой статье мы рассмотрим пошаговый процесс создания класса-наследника на языке Python с примером использования. Узнаем, как переопределить родительские атрибуты, методы и другие возможности.

Наследование - одна из базовых основ ООП. Python поддерживает два вида наследования: явное и неявное. Наследование позволяет создавать классы-наследники, которые имеют доступ ко всем переменным и функциям класса-родителя, а также добавляют к ним свои собственные методы и переменные.

Наследование в Python происходит с помощью ключевого слова class в объявлении подкласса, и при этом класс-родитель указывается в скобках после имени подкласса. Например:

class SubclassName (ParentClassName):
    '''docstring'''
    #statement-1
    #statement-2
    #.....

Объявление подкласса имеет следующее выражение:

class SubclassName (ParentClassName1, ParentClassName2, ...):
    '''docstring'''
    #statement-1
    #statement-2
    #.....

В этом примере SubclassName - это имя подкласса, а ParentClassName1, ParentClassName2, ... - это имена классов-родителей. Таким образом, подкласс будет наследовать методы и атрибуты от классов-родителей. Также такое наследование называется множественным наследованием. В противном случае наследование называется простым наследованием.

Наследование позволяет подклассу использовать методы и атрибуты родительского класса, а также добавить к ним некоторые свои методы и атрибуты. Например, в классе-родителе может быть метод get_name(), и в подклассе мы можем переопределить его, так, чтобы он возвращал имя пользователя вместо его имени. Например:

class ParentClass:
    def get_name(self):
        return self.name

class SubClass(ParentClass):
    def get_name(self):
        return self.user_name

p = ParentClass()
p.name = 'John Doe'
print(p.get_name()) # John Doe

s = SubClass()
s.user_name = 'Jane Doe'
print(s.get_name()) # Jane Doe

Кроме того, подклассы могут расширять класс-родитель, добавляя к нему новые методы. Например:

class ParentClass:
    def get_name(self):
        return self.name

class SubClass(ParentClass):
    def get_name(self):
        return self.user_name

    def get_age(self):
        return self.age

p = ParentClass()
p.name = 'John Doe'
print(p.get_name()) # John Doe

s = SubClass()
s.user_name = 'Jane Doe'
s.age = 20
print(s.get_name()) # Jane Doe
print(s.get_age()) # 20

Python поддерживает также неявное наследование, о котором мы будем говорить далее.

Неявное наследование

Неявное наследование позволяет подклассу наследовать методы и атрибуты не только от класса-родителя, но и от всех классов в иерархии наследования. Другими словами, подкласс наследует методы и атрибуты не только от родительского класса, но и от всех его предков. Например:

class GrandParentClass:
    def get_name(self):
        return self.name

class ParentClass(GrandParentClass):
    def get_age(self):
        return self.age

class SubClass(ParentClass):
    def get_user_name(self):
        return self.user_name

g = GrandParentClass()
g.name = 'John Doe'
print(g.get_name()) # John Doe

p = ParentClass()
p.age = 20
print(p.get_age()) # 20

s = SubClass()
s.user_name = 'Jane Doe'
print(s.get_user_name()) # Jane Doe
print(s.get_name()) # John Doe

В этом примере подкласс SubClass наследует метод get_name() от класса-предка GrandParentClass, даже не привязываясь напрямую к нему.

Поэтому наследование - очень мощное и полезное средство ООП, которое позволяет создавать более сложные классы с минимальным количеством кода.

Ответы (0)