【问题标题】:Class Inheritence (Python) Output Problems类继承 (Python) 输出问题
【发布时间】:2013-06-06 19:43:04
【问题描述】:

我正在经历“Learning Python The Hard Way”,然后我开始上课了。我理解它(或者我至少认为我理解了!)并尝试使用我自己的名称、函数等创建一个简单的变体......

现在我遇到的问题是代码不会在命令行\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)

提前致谢!

【问题讨论】:

  • 你希望它做什么?您永远不会调用任何会打印任何内容的方法,因此不会打印任何内容。
  • 进一步扩展 kindall 所说的,打印任何内容的唯一函数是 detail_* 函数。你构造了一堆对象,但不要求打印任何细节。
  • animal_detail 还假设动物以其腿数命名
  • @JacobAbrahams:梅特贝利斯三号的大蜘蛛被命名为“八足”,她所有的追随蜘蛛也是如此。所以,我认为我们可以安全地推断出所有其他有生命的生物。只要您假设所有动物在其一生中以线性速率生长,使用size 表示年龄就可以了。

标签: python class inheritance


【解决方案1】:

您的代码中存在一些问题: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)。记得在我建议你应该添加的行中进行更改!您会看到,当您实例化(即创建)基类 Animal 的对象时,detail(self) 方法会被调用;当您实例化其中一个子类时,该类的 detail(self) 方法会被调用。

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2016-07-19
    • 1970-01-01
    • 2016-07-24
    • 2015-03-11
    • 2011-08-25
    相关资源
    最近更新 更多