python继承属性_Python中的属性继承问题
不久前,我在開(kāi)發(fā)一個(gè)python應(yīng)用程序,我在類中使用了很多屬性,但是當(dāng)我試圖重寫派生類中基類的訪問(wèn)器的行為時(shí),我遇到了麻煩。這是我的問(wèn)題的草圖: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)我面對(duì)這個(gè)問(wèn)題時(shí),我沒(méi)有時(shí)間去尋找答案,我只是使用了簡(jiǎn)單的getters和setters,或者重新思考我的邏輯,所以我不需要重寫訪問(wèn)器,但現(xiàn)在我正試圖回答我的問(wè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
這正是我想要的,但問(wèn)題是_fix_name可以在類之外訪問(wèn),而且它是我需要為每個(gè)要重寫的屬性訪問(wèn)器添加的額外方法,等等
所以問(wèn)題是:
有什么“好”的方法嗎?或者,有沒(méi)有政治公眾人物來(lái)解決這個(gè)問(wèn)題?
我認(rèn)為某種@overrides裝飾器可以解決這個(gè)問(wèn)題?在
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python继承属性_Python中的属性继承问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大数据CDH包下载
- 下一篇: 金蝶云星空之表单插件的开发