类继承(Python)输出问题

2024-06-08 21:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在经历“艰苦地学习Python”,我上了课。我明白了(至少我想我明白了!)试着用我自己的名字,函数等创造一个简单的变体。。。你知道吗

现在我遇到的问题是,代码不会在命令行\ powershell中返回任何内容。它没有任何错误,只是转到另一行输入。你知道吗

代码如下:

class Animal(object):
    '''represents any animal'''
    def __init__(self, legs, size):
        self.legs = legs
        self.size = size

    def detail_animal(self):
        '''show # of legs and size'''
        print "Name: %r\nAge: %r" % (self.legs, self.size)

class canine(Animal):   
    '''represents a canine'''

    def __init__(self, legs, size, hair_length):
        Animal.__init__(self, legs, size)
        self.hair_length = hair_length

    def detail_canine(self):
        Animal.detail(self)
        print 'Has %r inch long hairs.' % self.hair_length

class feral_cat(Animal):
    '''represents a feral cat'''

    def __init__(self, legs, size, tail_length):
        Animal.__init__(self, legs, size)
        self.tail_length = tail_length

    def detail_feral(self):
        Animal.detail(self)
        print "Tail Length: %r" % tail_length

c1 = canine(4, 2, 0.5)
c2 = canine(5, 3, 0.75)
fc1 = feral_cat(4, 5, 3)
a = Animal(4, 2)

提前谢谢!你知道吗


Tags: selfsizeinitdeflengthcanineclasstail
1条回答
网友
1楼 · 发布于 2024-06-08 21:20:56

代码中存在一些问题:Animal类没有名为detail的方法,您可以尝试在其所有子类中调用该方法。您可能应该将detail_animal(self)重命名为detail(self)。要让程序打印一些输出,请在末尾添加以下行:

c1.detail_canine()
c2.detail_canine()
fc1.detail_feral()
a.detail()

此外,如果您的程序打算尝试方法重写,即在子类中重新定义基类方法的可能性,您应该尝试将detail_canine(self)detail_feral(self)更改为detail(self)。请记住在我建议您添加的行中也进行更改!您将看到,当您实例化(即创建)基类Animaldetail(self)方法的对象时,将调用该对象;当您实例化其中一个子类时,将调用该类的detail(self)方法。你知道吗

相关问题 更多 >