python fd函数_Python:将属性及其函数(fget、fset、fdel)从一个类复制到另一个类...
您只需将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)从一个类复制到另一个类...相关推荐
- python中property函数_Python中的property()函数
property() 函数的作用是在新式类中返回属性值 1.语法: class property([fget[, fset[, fdel[, doc]]]]) 2.参数: fget -- 获取属性值的 ...
- python阶乘匿名函数_python的高阶函数与匿名函数
一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...
- 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...
- python的def函数_Python 学习之 def 函数
共3118字, 阅读本文需要8分钟 def 函数基础 def 函数的定义 在 python 中,def 函数是用来定义一个 function() 的.基本使用 示例下面我们定义了一个 function ...
- 如何用python生成软件_python中的生成器函数是如何工作的?
1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...
- 常用python内置函数_python常用内置函数
一 反射相关 1 hasattr 根据字符串的形式 , 去判断对象中是否有成员 1 hasattr(object,name)2 判断对象object是否包含名为name的特性(hasattr是通过 ...
- python type函数_Python type()函数
python type函数 Python type()函数 (Python type() Function) Python has a lot of buit-in function. The typ ...
- python get rect 函数_Python之Pygame.rect函数
1.参数设置 Pygame 通过 Rect 对象存储和操作矩形区域.一个 Rect 对象可以由 left,top,width,height 几个值创建.Rect 也可以是由 Pygame 的对象所创建 ...
- python中string模块各属性以及函数的用法
原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...
- python 一等公民_Python中一等公民——函数
Python中"一等公民"--函数 Python的函数是"一等公民". 你可以将它们分配给变量,将它们存储在数据结构中,将它们作为参数传递给其他函数,甚至将它们 ...
最新文章
- 阿里巴巴开源容器镜像加速技术
- 详解 WebRTC 高音质低延时的背后 — AGC
- 科幻电影系列-计算机技术
- 自动化的OSGi测试运行器
- JSTL标签用法:c:choosec:forEachc:ifc:whenc:set
- SAP License:SAP MM物料管理
- VS 2008中PDA开发环境的相关配置
- python socket 通信(2) 协程实现多人聊天室
- link st 量产工具_STM32 ST-LINK Utility介绍、下载、安装、使用方法
- 想做电商产品经理你先要学会这几件事
- 【送书活动】你真的了解Java多线程编程吗?
- 如何在“文件资源”左侧栏处删除坚果云图标
- 大学web基础期末大作业~仿品优购页面制作(HTML+CSS+JavaScript)
- 致虚幻引擎社区的一封公开信(转)
- 【SLAM】2019浙大SLAM暑期学校--刘浩敏《集束调整》学习记录
- Android实现渐色变圆形
- 张赐荣 | 浅谈 UIAutomation 自动化技术在读屏软件中的应用
- wireless tools工具的移植和使用
- [Economist] Print me a phone 给我印一部手机
- 文佳夹操作之获取指定目录下的所有文件及文件夹
热门文章
- 高分区Localdimming方案研讨
- vue样式 引入图片_Vue引入图片的几种方式
- 讲解开模行程板要注意的事项
- DeFi项目Harvest Finance造成用户损失超2000万美元,知名KOL提醒用户撤离Harvest
- TTS授权失败 iOS百度导航
- “类平板天线”设计 newifi新路由2体验评测
- Knoppix Linux CD 中文版
- 机械臂正逆运动学-----数值解
- 中国皇帝定下佛教戒律:僧人不准吃肉
- JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述)