@1Tima1
Меня здесь не любят

Эти классы отличаются или нет?

class Bill():
    def __init__(self,description):
        self.description=description
class Tail():
    def __init__(self,lenght):
        self.lenght=lenght
class Duck():
    def __init__(self,bill,tail):
        pass

    def about(self):
        print(bill.description,tail.lenght)

tail=Tail('long')
>>> bill=Bill('wide')
>>> duck=Duck(bill,tail)
>>> duck.about()
wide long

и этот
class Bill():
    def __init__(self,description):
        self.description=description
class Tail():
    def __init__(self,lenght):
        self.lenght=lenght
class Duck():
    def __init__(self,bill,tail):
        self.bill=bill
        self.tail=tail
    def about(self):
        print(bill.description,tail.lenght)
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
@Taus
Кроме отличий инициализации класса - нет. Вызов duck.about() в обоих случаях предполагает наличие в пространстве имён объектов с именами bill и tail, у которых соответственно имеются нужные аттрибуты description и length. Так обычно не пишут, поэтому второй случай ближе к реальному коду, но в нём необходимо тогда заменить print(bill.description,tail.lenght) на print(self.bill.description, self.tail.lenght).
На вторую часть: никакого наследования в данном коде нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы