Пример наследования на Python

Объекты классов ListAdder и DictAdder могут участвовать в операциях сложения через класс Adder. При этом механизм сложения у каждого подкласса реализован отдельно.

class Adder:
    def add(self, y):
        print('not implemented!')
    def __init__(self, start=[]): # вызывается также из классов ListAdder и DictAdder
        self.data = start
    def __add__(self, other): # вызывается в выражениях < объект + other >
        return self.add(other) # self передается в первом аргументе
 
class ListAdder(Adder):
    def add(self, y): # сложение двух списков
        return self.data + y
 
class DictAdder(Adder):
    def add(self, y): # сложение двух словарей
        new = {}
        for key in self.data: # извлекается каждый ключ из self.data
            new[key] = self.data[key] # в new добавляется пара < ключ:значение >
        for key in y:
            new[key] = y[key]
        return new

Проверка работы скрипта:

>>> a = ListAdder([2,3])
>>> a.data
[2, 3]
>>> a + [5]
[2, 3, 5]
>>> a
<__main__.ListAdder object at 0x00000000034E27F0>
>>> a.data
[2, 3]
 
>>> b = DictAdder({'p':10, 'q':20, 'r':0})
>>> b + {'t':30}
{'q': 20, 'p': 10, 'r': 0, 't': 30}
>>> b + {'r':30}
{'q': 20, 'p': 10, 'r': 30}

  Создание Python ботов: основы и практические рекомендации
Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x