Почему мой определенный метод «прогулки» класса «Dog» не наследуется дочерними классами «Bulldog» или «Russell Terrier»? - PullRequest
0 голосов
/ 21 февраля 2019

В моей последней строке кода, когда я вызываю метод walk (), ничего не происходит.Но когда я запускаю его в консоли, я получаю сообщение об ошибке:

Traceback (последний вызов был последним): файл "", строка 2, в AttributeError: у объекта "Bulldog" нет атрибута "walk"'

class Pets:

    def __init__(self,dogs):
        self.dogs=dogs


class Dog:

    # Class attribute
    species = 'mammal'

    # Initializer / Instance attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.is_hungry = True

# instance method
    def eat(self):
        self.is_hungry = False

#Walk instance method
    def walk(self):
        return "{} is walking!" .format(self.name)

# Child class (inherits from Dog class)
class RussellTerrier(Dog):
    def run(self, speed):
        return "{} runs {}".format(self.name, speed)

# Child class (inherits from Dog class)
class Bulldog(Dog):
    def run(self, speed):
        return "{} runs {}".format(self.name, speed)

# create isntances of dogs
my_dogs = [
    Bulldog("Tom", 6),
    RussellTerrier("Fletcher", 7),
    Dog("Larry", 9)
]

my_Pets=Pets(my_dogs)

#walking

for doggy in my_Pets.dogs:
    doggy.walk()

1 Ответ

0 голосов
/ 21 февраля 2019

Ваш walk метод возвращает string.Если вы ожидаете, что он напечатает строку, то вам нужно сделать это явно.Ваши последние две строки должны быть:

for doggy in my_Pets.dogs:
    print(doggy.walk())

Ваша проблема с AttributeError, скорее всего, связана с тем, как вы копируете ее в консоль.

...