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