Не передавайте animal
dog
, когда вы создаете, а экземпляр просто делает a = dog (). Собака наследует от животного, это не значит, что вы должны пройти егоПередайте только то, что вы хотите передать своему конструктору (то есть __init__
).
То, что делал ваш код, печатало сам объект класса: print(animal)
.
Итак:
class animal():
def __init__(self,leg_number=4,cell_number="multicellular",feeding="grass"):
self.leg_number= leg_number
self.cell_number= cell_number
self.feeding= feeding
class dog(animal):
def __init__(self,leg_number=4,cell_number="multicellular",feeding="meat"):
super().__init__(leg_number,cell_number)
self.feeding= feeding
print( "this dog has leg number: {}\ncell type: {}\nfeeding type {}".format(self.leg_number,self.cell_number,self.feeding))
a = dog()
Хотя я бы рекомендовал более чистый подход:
class animal():
def __init__(self, leg_number ,cell_number, feeding):
self.leg_number = leg_number
self.cell_number = cell_number
self.feeding = feeding
def __str__(self):
return f"This {self.__class__.__name__} has {self.leg_number} legs, {self.cell_number} cell type, and feeds on {self.feeding}."
class dog(animal):
def __init__(self):
super().__init__(4, "multicellular", "meat")
def bark(self):
print("Woof")
a = dog()
print(a)
a.bark()
Вывод:
This dog has 4 legs, multicellular cell type, and feeds on meat.
Woof