ООП — Наследование
Наследование в 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)