不久前,我在开发一个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中的属性继承问题相关推荐

  1. python继承属性_python继承,属性查找顺序

    以为python支持多继承,因此在复杂的继承关系下很容易弄错属性的查找顺序,今天特意学习了下 python3用的是c3线性化算法,听名字很高大上,公式我也看了,看不懂,但是这不影响理解查找的顺序 先看 ...

  2. python 惰性属性_python中惰性对象

    惰性对象是什么? 首先需要明确啥是惰性计算(lazy evaluation):是指仅仅在真正需要执行的时候才计算的表达式的值.充分利用其特点 可以带来很多的便利 1. 避免不必要的计算,带来性能的提升 ...

  3. python继承语法_python中继承父类的例子(python3的语法)

    #coding=utf8 class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): self.capacity=capacity self. ...

  4. python继承方案_python中的动态调度和继承

    我正在尝试修改Guido的多方法(动态调度代码): 处理继承和可能的乱序参数. 例如(继承问题) class A(object): pass class B(A): pass @multimethod ...

  5. python的继承用法_python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  6. python描述符与实例属性_Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  7. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  8. python property作用_python中@property的作用和getter setter的解释

    @property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同 ...

  9. python 浮点数比较_Python中的浮点数

    浮点数在计算机中表达为二进制(binary)小数.例如:十进制小数: 0.125 是 1/10 + 2/100 + 5/1000 的值. 类似地,二进制小数: 0.001 是 0/2 + 0/4 + ...

最新文章

  1. 2020年中国智慧城市发展研究报告(附下载)
  2. Python过渡性模块重载(递归重载模块)
  3. python自由职业可以做什么_我想成为自由职业者,但不知道做什么?
  4. python中模块和包是什么_Python中模块和包的概念
  5. 黑客在数十个 WordPress 插件和主题中插入秘密后门,可发动供应链攻击
  6. [Ubuntu Error]无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
  7. 【VRP】基于matlab节约里程算法求解车辆路径规划问题【含Matlab源码 1166期】
  8. winpe加载raid_windows pe3.0加载RAID驱动!
  9. 数字滤波算法——中值滤波
  10. jsDoc的使用文档
  11. dble安装zk及配置mysql主从模式,在已有mysql存在数据升级mysql配置
  12. 标准误 Standard error 简单解释
  13. win10无法打开设置,桌面右键显示设置提示ms-settings:display 该文件没有与之关联的程序来执行该操作
  14. ipcam rtsp流生成 mp4( 附源码)
  15. vue生成条形码和二维码并打印
  16. css筋斗云,JavaScript实现精美个性导航栏筋斗云效果
  17. java8新特性stream流
  18. tabIndex 和 aria注意点
  19. 塑形管理小程序开发(一)-源头追溯
  20. Android使用阿里云接口实现身份证识别功能

热门文章

  1. 配置Oracle Instant Client环境
  2. 不作35岁的程序员?
  3. nfs服务器工作原理
  4. Codeforces 899D Shovel Sale
  5. BestCoder Round #39 解题报告
  6. day16-Dom提交表单以及其他
  7. 前端之JavaScript 02
  8. 一起学并发编程 - 优雅关闭
  9. 【原创】注意析构函数的使用
  10. 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像