请帮忙看下类继承的错误问题多谢

本人初学,在类继承的时候遇到点小问题 一时无法想开,请指点下怎么解决 ~\
一段简单的类:
class Dog(object):
def init(self,name,age,color):
self.name=name
self.age=age
self.color=color
def eat(self):
print(self.name,"在吃蛋糕")
def run(self,speed):
print(self.name+"吃完蛋糕飞快的跑!速度:"+speed)

class Taidi(Dog):
def init(self,size,color):
super(Taidi,self).init(color) #13行
self.size=size
def height(self):
print(self.size+"型犬")

taidi=Taidi("小","黄色") #18行

执行后提示:
Traceback (most recent call last):
  File "C:\Users\Kano\Desktop\py\test15.py", line 18, in
    taidi=Taidi("小","绿色")
  File "C:\Users\Kano\Desktop\py\test15.py", line 13, in init
    super(Taidi,self).init(color)
TypeError: init() missing 2 required positional arguments: 'age' and 'color'

讨论数量: 2
pardon110

Taidi 继承了 Dog 类,Dog类初始化方法有三个位置参数name,age,color, 而Taid 类用super调用父类初始化方法,却只提供了一个参数 color 见第13行代码。换而言之,实参与形参不一致。另外python的初始方法是一个特殊的魔术方法__init__,类似于其他语言中的的构造函数,所以,你的代码可以这样写

# encoding: utf-8

class Dog(object):
    def __init__(self,name,age,color):
        self.name=name
        self.age=age
        self.color=color

    def eat(self):
        print(self.name,"在吃蛋糕")

    def run(self,speed):
        print(self.name+"吃完蛋糕飞快的跑!速度:"+speed)

class Taidi(Dog):
    def __init__(self,size,color):
        super(Taidi,self).__init__("taidi",2,color)
        self.size=size

    def height(self):
        print (self.size+"型犬")

a = Taidi("小","黄色")
a.height()
1个月前 评论
王彦杰

错误原因:
父类初始化需要三个参数,
在子类初始化方法里面初始化父类的时候, 只传递了一个参数

代码要高亮

class Dog(object):
    def init(self,name,age,color):
        self.name=name
        self.age=age
        self.color=color
    def eat(self):
        print (self.name,"在吃蛋糕")
    def run(self,speed):
        print (self.name+"吃完蛋糕飞快的跑!速度:"+speed)

class Taidi(Dog):
    def init(self,size,color):
        super(Taidi,self).init(color) #13 行
        self.size=size
    def height(self):
        print (self.size+"型犬")

taidi=Taidi ("小","黄色") #18 行
1周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!