av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

python - 程序運行會出現錯誤

瀏覽:113日期:2022-06-27 17:51:54

問題描述

class Person(object): def __init__(self,name):self.name = nameclass Teacher(Person): def __init__(self,score):self.__score = scoreclass Student(Teacher,Person): def __init__(self,name,score):Person.__init__(self,name)super(Student,self).__init__(score) @property def score(self):return self.__score @score.setter def score(self,score):if score<0 or score >100: raise ValueError(’invalid score’)self.__score = score def __str__(self):return ’Student:%s,%d’ %(self.name,self.score)s1 = Student(’Jack’,89)s1.score = 95print s1

在運行這個程序時,只有當score是私有變量的時候才能正常運行,是property的某些特性嗎,還是什么?如果只設置為self.score = score,就會出現‘maximum recursion depth exceeded while calling a Python object’的錯誤,求大神解答

問題解答

回答1:

會產生這個困惑的原因是對python的getter裝飾器和setter裝飾器不夠熟悉

當你聲明了對score屬性的setter裝飾器之后, 實際上對這個score進行賦值就是調用這個setter裝飾器綁定的方法

所以你的setter要訪問的成員變量不能和setter方法同名, 不然就相當于一個無盡的迭代:

self.score(self.score(self.score(self.score(self.score........ 無盡的迭代,

當然會報超過最大迭代深度的錯誤了

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩欧美一区二区三区 | 91免费在线| 国产精品高清在线 | 四虎影院新地址 | 中文字幕在线第一页 | 欧美日韩一区二区视频在线观看 | 久久精品国产精品青草 | 欧美一级片 | 成人一区二区三区在线观看 | 国产一级免费视频 | 中文字幕一区二区三区乱码在线 | 亚洲九九 | 97人澡人人添人人爽欧美 | 精品久久久久一区二区国产 | 国产精品视频偷伦精品视频 | 欧美日韩国产在线 | 午夜电影福利 | 成人深夜福利网站 | 国产精品99视频 | 亚洲日韩中文字幕一区 | 亚洲欧美第一视频 | 久久99精品国产 | 日本视频免费 | 欧美视频免费 | 日韩精品久久久久 | 亚洲高清在线 | 久久一视频| 精品国产乱码久久久久久丨区2区 | 欧美日韩精品一区二区三区四区 | 99精品亚洲国产精品久久不卡 | 久久久久亚洲精品 | 999久久久久久久久6666 | 视频二区国产 | 精品视频免费 | 夜夜摸夜夜操 | 国产免费让你躁在线视频 | 久久新 | 欧美日韩高清在线一区 | 国产成人福利 | 欧美国产精品一区二区 | 午夜在线视频一区二区三区 |