类继承(Python)输出问题

类继承(Python)输出问题,python,class,inheritance,Python,Class,Inheritance,我正在经历“艰苦地学习Python”,我上了课。我理解它(或者至少我认为我理解!),并尝试创建一个简单的变体,使用我自己的名称、函数等 现在我遇到的问题是,代码不会在命令行\powershell中返回任何内容。它没有任何错误,只是转到另一行输入 代码如下: class Animal(object): '''represents any animal''' def __init__(self, legs, size): self.legs = legs

我正在经历“艰苦地学习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)

提前谢谢

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

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

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

您希望它做什么?你从不调用任何可以打印任何内容的方法,因此任何内容都不会被打印。为了扩展kindall所说的内容,打印任何内容的唯一函数是detail_*函数。你构建了一组对象,但不要求打印任何细节。animal_detail还假设动物是根据其数量命名的legs@JacobAbrahams当前位置美特贝利斯三号的大蜘蛛被命名为“八条腿”,她的所有追随者蜘蛛也被命名为“八条腿”。所以,我认为我们可以安全地从中推断出所有其他有生命的生物。只要你假设所有动物在其一生中都以线性速率生长,那么对年龄使用
size
就可以了。