python继承属性_Python中的属性继承问题
不久前,我在開發(fā)一個(gè)python應(yīng)用程序,我在類中使用了很多屬性,但是當(dāng)我試圖重寫派生類中基類的訪問器的行為時(shí),我遇到了麻煩。這是我的問題的草圖:class Person(object):
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
class Mr(Person):
@name.setter
def name(self,value):
self._name = "Mr. "+value
p = Person()
p.name = "John"
print p.name
m = Mr()
m.name = "John"
print m.name
運(yùn)行時(shí)會(huì)出現(xiàn)以下錯(cuò)誤:
^{pr2}$
當(dāng)我面對這個(gè)問題時(shí),我沒有時(shí)間去尋找答案,我只是使用了簡單的getters和setters,或者重新思考我的邏輯,所以我不需要重寫訪問器,但現(xiàn)在我正試圖回答我的問題,并在一些書中學(xué)習(xí),到目前為止,我只找到了這種方法:class Person(object):
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = self._fix_name(value)
def _fix_name(self,value):
return value
class Mr(Person):
def _fix_name(self,value):
return "Mr. "+value
p = Person()
p.name = "John"
print p.name
m = Mr()
m.name = "John"
print m.name
當(dāng)我運(yùn)行這個(gè)程序時(shí),我得到:John
Mr. John
這正是我想要的,但問題是_fix_name可以在類之外訪問,而且它是我需要為每個(gè)要重寫的屬性訪問器添加的額外方法,等等
所以問題是:
有什么“好”的方法嗎?或者,有沒有政治公眾人物來解決這個(gè)問題?
我認(rèn)為某種@overrides裝飾器可以解決這個(gè)問題?在
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python继承属性_Python中的属性继承问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据CDH包下载
- 下一篇: python游戏设计毕业论文_游戏设计游