ООП — Наследование

ООП — Наследование

Наследование в Python весьма похож на наследование в языке C++

class Human(): 
    def __init__(self, name, age, sex):
        self.name = name 
        self.age = age 
        self.sex = sex 
    def showInfo(self):
        print(f'Человек: {self.name}, возраст {self.age}, пол {self.sex}')

Создадим класс – наследник от класса человек

class SuperMan(Human):
    def __init__(self, name, age, sex, height, weight):
#Надо вызвать конструктор базового класса и по сути – создать его внутри класса потомка.
        super().__init__(name, age, sex)

# Доопределяем передаваемые в конструктор SuperMan переменные
    self.height = height
    self.weight = weight

Можем перепределить функцию базового класса
# def showInfo(self):
# print(f’Cупермен| имя: {self.name}, возраст {self.age}, пол {self.sex}, вес {self.weight}, рост {self.height}’)

Создание объектов
human_obj = Human(‘Петя’, 25, ‘муж.’)
human_obj.showInfo()

superman_obj = SuperMan(‘Кларк ‘, 34, ‘муж.’, 191, 107)
superman_obj.showInfo()

Встроенные методы:
При желании объект класса можно вызвать как обычную функцию с помощью встроенного метода call – т.е. что-то похожее на функтор из c++:
class a_na_b():
# переопределяем вызов, т.е. ()
# кроме этого класс можно снабдить полезными атрибутами
def __call__(self, a, b):
return a*b

mult = a_na_b()
mult(2, 3)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *