我正在经历'学习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)
提前致谢!
答案 0 :(得分:2)
您的代码中存在一些问题: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)
方法。