python继承属性_Python中的属性继承问题
不久前,我在开发一个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
运行时会出现以下错误:
^{pr2}$
当我面对这个问题时,我没有时间去寻找答案,我只是使用了简单的getters和setters,或者重新思考我的逻辑,所以我不需要重写访问器,但现在我正试图回答我的问题,并在一些书中学习,到目前为止,我只找到了这种方法: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装饰器可以解决这个问题?在
python继承属性_Python中的属性继承问题相关推荐
- python继承属性_python继承,属性查找顺序
以为python支持多继承,因此在复杂的继承关系下很容易弄错属性的查找顺序,今天特意学习了下 python3用的是c3线性化算法,听名字很高大上,公式我也看了,看不懂,但是这不影响理解查找的顺序 先看 ...
- python 惰性属性_python中惰性对象
惰性对象是什么? 首先需要明确啥是惰性计算(lazy evaluation):是指仅仅在真正需要执行的时候才计算的表达式的值.充分利用其特点 可以带来很多的便利 1. 避免不必要的计算,带来性能的提升 ...
- python继承语法_python中继承父类的例子(python3的语法)
#coding=utf8 class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): self.capacity=capacity self. ...
- python继承方案_python中的动态调度和继承
我正在尝试修改Guido的多方法(动态调度代码): 处理继承和可能的乱序参数. 例如(继承问题) class A(object): pass class B(A): pass @multimethod ...
- python的继承用法_python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- python描述符与实例属性_Python 中的属性访问与描述符
在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...
- python map用法_Python中ChainMap的一种实用用法
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...
- python property作用_python中@property的作用和getter setter的解释
@property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同 ...
- python 浮点数比较_Python中的浮点数
浮点数在计算机中表达为二进制(binary)小数.例如:十进制小数: 0.125 是 1/10 + 2/100 + 5/1000 的值. 类似地,二进制小数: 0.001 是 0/2 + 0/4 + ...
最新文章
- 2020年中国智慧城市发展研究报告(附下载)
- Python过渡性模块重载(递归重载模块)
- python自由职业可以做什么_我想成为自由职业者,但不知道做什么?
- python中模块和包是什么_Python中模块和包的概念
- 黑客在数十个 WordPress 插件和主题中插入秘密后门,可发动供应链攻击
- [Ubuntu Error]无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
- 【VRP】基于matlab节约里程算法求解车辆路径规划问题【含Matlab源码 1166期】
- winpe加载raid_windows pe3.0加载RAID驱动!
- 数字滤波算法——中值滤波
- jsDoc的使用文档
- dble安装zk及配置mysql主从模式,在已有mysql存在数据升级mysql配置
- 标准误 Standard error 简单解释
- win10无法打开设置,桌面右键显示设置提示ms-settings:display 该文件没有与之关联的程序来执行该操作
- ipcam rtsp流生成 mp4( 附源码)
- vue生成条形码和二维码并打印
- css筋斗云,JavaScript实现精美个性导航栏筋斗云效果
- java8新特性stream流
- tabIndex 和 aria注意点
- 塑形管理小程序开发(一)-源头追溯
- Android使用阿里云接口实现身份证识别功能