1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Animal:
    def __init__(self, size, color):
        self.size = size
        self.color = color
        self.mood = 'good'

    def change_mood(self, new_mood):
        self.mood = new_mood

    def voice(self):
        """В зависимости от значения self.mood, животное издаёт различные звуки.
        """
        if self.mood == 'good':
            print("Животное издало звук")
        elif self.mood == 'bad':
            print("Животное исторгло ужасный звук")
        else:
            print("Животное в непонятном настроении, издвать звуки не хочет")

    def __str__(self):
        """Переопределили специальный метод, который вызывается, если объект
        преобразуют в строку или печатают с помощью printf.
        """
        return '<Животное {0}, {1}, {2}>'.format(self.size,
                    self.color, self.mood)


class Dog(Animal): # Dog наследует Animal
    def __init__(self, size, color, breed):
        super().__init__(size, color)
        self.breed = breed
        
    def voice(self): # Переопределяем метод voice.
        print("Гав!")

    def get_ball(self, item_list):
        for iterm in item_list:
            if item == 'ball':
                print("Ура, мяч нашёлся!")
                return


class Cat(Animal): # Cat наследует Animal
    def __init__(self, size, color, hair_len):
        # Вызываем __init__ для класса Animal
        # super представляем объект self как объект
        # клас са-родителя, чтобы мы могли вызвать метод
        # класса-родителя
        super().__init__(size, color)
        self.hair_len = hair_len
        self.mood = 'bad'

    def voice(self): # Переопределяем метод voice.
        print("Мяу!")