WEB开发网
开发学院软件开发Python Python 中的元类编程 阅读

Python 中的元类编程

 2008-09-30 12:43:17 来源:WEB开发网   
核心提示: 正如您所期望的,该应用程序打印出 data 对象相当常规的描述(常规的实例对象),Python 中的元类编程(6),但如果将 运行时参数传递给应用程序,则可以得到相当不同的结果: 清单 8. 添加外部序列化元类% dump.py gnosis.magic MetaXMLPickler<

正如您所期望的,该应用程序打印出 data 对象相当常规的描述(常规的实例对象)。但如果将 运行时参数传递给应用程序,则可以得到相当不同的结果:

清单 8. 添加外部序列化元类

% dump.py gnosis.magic MetaXMLPickler
<?xml version="1.0"?>
<!DOCTYPE PyObject SYSTEM "PyObjects.dtd">
<PyObject module="__main__" class="Data" id="720748">
<attr name="lst" type="list" id="980012" >
 <item type="string" value="a" />
 <item type="string" value="b" />
 <item type="string" value="c" />
</attr>
<attr name="num" type="numeric" value="38" />
<attr name="str" type="string" value="spam" />
</PyObject>

这个特殊的示例使用 gnosis.xml.pickle 的序列化样式,但最新的 gnosis.magic 包还包含元类序列化器 MetaYamlDump 、 MetaPyPickler 和 MetaPrettyPrint 。而且, dump.py “应用程序”的用户可以从任何定义了任何期望的 MetaPickler 的 Python 包中利用该“MetaPickler”。出于此目的而编写合适的元类如下所示:

清单 9. 用元类添加属性

class MetaPickler(type):
  "Metaclass for gnosis.xml.pickle serialization"
  def __init__(cls, name, bases, dict):
    from gnosis.xml.pickle import dumps
    super(MetaPickler, cls).__init__(name, bases, dict)
    setattr(cls, 'dumps', dumps)

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Python 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接