您只需将property对象本身复制到新类中。它将保存对getter、setter和deleter函数的引用,不需要跨这些函数进行复制。在

对于新样式的类,您的代码无法工作;您不能将分配给class__dict__属性:>>> item = SetProperties(Item01Object)

Traceback (most recent call last):

File "", line 1, in

File "", line 4, in SetProperties

TypeError: 'dictproxy' object does not support item assignment

使用setattr()来设置新样式类的属性:

^{pr2}$

请注意,property对象是跨批发复制的。在

演示:>>> class Item01Object(object):

... properties = ["a","c"]

... ATTR = None

...

>>> def SetProperties( ItemObject ):

... for propName, cls in AttrContainer.__dict__.iteritems():

... if propName in ItemObject.properties:

... setattr(ItemObject, propName, cls.__dict__[propName])

... return ItemObject()

...

>>> item = SetProperties(Item01Object)

>>> item

>>> item.a

>>> item.a = 20

>>> item.a

23.021

不过,您只需跨property对象复制到目标类一次;函数返回一个实例意味着您计划将其用于创建的所有实例。在

我会让它变成一个装饰师:def set_properties(cls):

for name, propcls in vars(AttrContainer).iteritems():

if name in cls.properties:

setattr(cls, name, vars(propcls)[name])

return cls

然后在您的每个Item*Object类上使用此选项:@set_properties

class Item01Object(object):

properties = ["a","c"]

ATTR = None

@set_properties

class Item02Object(object):

properties = ["b","c"]

ATTR = None

演示:>>> def set_properties(cls):

... for name, propcls in vars(AttrContainer).iteritems():

... if name in cls.properties:

... setattr(cls, name, vars(propcls)[name])

... return cls

...

>>> @set_properties

... class Item01Object(object):

... properties = ["a","c"]

... ATTR = None

...

>>> @set_properties

... class Item02Object(object):

... properties = ["b","c"]

... ATTR = None

...

>>> item01 = Item01Object()

>>> item01.c = 20

>>> item01.c

3

>>> item02 = Item02Object()

>>> item02.b = 42

Traceback (most recent call last):

File "", line 1, in

AttributeError: can't set attribute

>>> item02.b

'Something'

python fd函数_Python:将属性及其函数(fget、fset、fdel)从一个类复制到另一个类...相关推荐

  1. python中property函数_Python中的property()函数

    property() 函数的作用是在新式类中返回属性值 1.语法: class property([fget[, fset[, fdel[, doc]]]]) 2.参数: fget -- 获取属性值的 ...

  2. python阶乘匿名函数_python的高阶函数与匿名函数

    一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...

  3. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西

    原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...

  4. python的def函数_Python 学习之 def 函数

    共3118字, 阅读本文需要8分钟 def 函数基础 def 函数的定义 在 python 中,def 函数是用来定义一个 function() 的.基本使用 示例下面我们定义了一个 function ...

  5. 如何用python生成软件_python中的生成器函数是如何工作的?

    1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...

  6. 常用python内置函数_python常用内置函数

    一  反射相关 1 hasattr  根据字符串的形式 , 去判断对象中是否有成员 1 hasattr(object,name)2 判断对象object是否包含名为name的特性(hasattr是通过 ...

  7. python type函数_Python type()函数

    python type函数 Python type()函数 (Python type() Function) Python has a lot of buit-in function. The typ ...

  8. python get rect 函数_Python之Pygame.rect函数

    1.参数设置 Pygame 通过 Rect 对象存储和操作矩形区域.一个 Rect 对象可以由 left,top,width,height 几个值创建.Rect 也可以是由 Pygame 的对象所创建 ...

  9. python中string模块各属性以及函数的用法

    原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...

  10. python 一等公民_Python中一等公民——函数

    Python中"一等公民"--函数 Python的函数是"一等公民". 你可以将它们分配给变量,将它们存储在数据结构中,将它们作为参数传递给其他函数,甚至将它们 ...

最新文章

  1. 阿里巴巴开源容器镜像加速技术
  2. 详解 WebRTC 高音质低延时的背后 — AGC
  3. 科幻电影系列-计算机技术
  4. 自动化的OSGi测试运行器
  5. JSTL标签用法:c:choosec:forEachc:ifc:whenc:set
  6. SAP License:SAP MM物料管理
  7. VS 2008中PDA开发环境的相关配置
  8. python socket 通信(2) 协程实现多人聊天室
  9. link st 量产工具_STM32 ST-LINK Utility介绍、下载、安装、使用方法
  10. 想做电商产品经理你先要学会这几件事
  11. 【送书活动】你真的了解Java多线程编程吗?
  12. 如何在“文件资源”左侧栏处删除坚果云图标
  13. 大学web基础期末大作业~仿品优购页面制作(HTML+CSS+JavaScript)
  14. 致虚幻引擎社区的一封公开信(转)
  15. 【SLAM】2019浙大SLAM暑期学校--刘浩敏《集束调整》学习记录
  16. Android实现渐色变圆形
  17. 张赐荣 | 浅谈 UIAutomation 自动化技术在读屏软件中的应用
  18. wireless tools工具的移植和使用
  19. [Economist] Print me a phone 给我印一部手机
  20. 文佳夹操作之获取指定目录下的所有文件及文件夹

热门文章

  1. 高分区Localdimming方案研讨
  2. vue样式 引入图片_Vue引入图片的几种方式
  3. 讲解开模行程板要注意的事项
  4. DeFi项目Harvest Finance造成用户损失超2000万美元,知名KOL提醒用户撤离Harvest
  5. TTS授权失败 iOS百度导航
  6. “类平板天线”设计 newifi新路由2体验评测
  7. Knoppix Linux CD 中文版
  8. 机械臂正逆运动学-----数值解
  9. 中国皇帝定下佛教戒律:僧人不准吃肉
  10. JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述)