2018-10-24
閱讀量:
825
python 錯誤解析(二十三)
代碼如下:
>>>def A():
return A()
>>>A() #無限循環(huán),等消耗掉所有內(nèi)存資源后,報最大遞歸深度的錯誤
File "<pyshell#2>", line 2, in A return A()RuntimeError: maximum recursion depth exceeded
class Bird:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print "Ahaha..."
self.hungry = False
else:
print "No, Thanks!"
該類定義鳥的基本功能吃,吃飽了就不再吃
輸出結(jié)果:
代碼如下:
>>> b = Bird()
>>> b.eat()
Ahaha...
>>> b.eat()
No, Thanks!
下面一個子類SingBird,
代碼如下:
class SingBird(Bird):
def __init__(self):
self.sound = 'squawk'
def sing(self):
print self.sound
輸出結(jié)果:
代碼如下:
>>> s = SingBird()
>>> s.sing()
squawk
SingBird是Bird的子類,但如果調(diào)用Bird類的eat()方法時,
代碼如下:
>>> s.eat()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
s.eat()
File "D:\Learn\Python\Person.py", line 42, in eat
if self.hungry:
AttributeError: SingBird instance has no attribute 'hungry'
【錯誤分析】代碼錯誤很清晰,SingBird中初始化代碼被重寫,但沒有任何初始化hungry的代碼
代碼如下:
class SingBird(Bird):
def __init__(self):
self.sound = 'squawk'
self.hungry = Ture #加這么一句
def sing(self):
print self.sound






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論