捕获类的属性定义顺序-华为云大数据中台架构分享

时间:2024-07-01 05:00:46
【文件属性】:

文件名称:捕获类的属性定义顺序-华为云大数据中台架构分享

文件大小:5.68MB

文件格式:PDF

更新时间:2024-07-01 05:00:46

Python cookbook 中文 参考

9.14 捕获类的属性定义顺序 问题 你想自动记录一个类中属性和方法定义的顺序, 然后可以利用它来做很多操作 (比如序列化、映射到数据库等等)。 解决方案 利用元类可以很容易的捕获类的定义信息。下面是一个例子,使用了一个 OrderedDict 来记录描述器的定义顺序: from collections import OrderedDict # A set of descriptors for various types class Typed: _expected_type = type(None) def __init__(self, name=None): self._name = name def __set__(self, instance, value): if not isinstance(value, self._expected_type): raise TypeError('Expected ' + str(self._expected_type)) instance.__dict__[self._name] = value class Integer(Typed): _expected_type = int class Float(Typed): _expected_type = float class String(Typed): _expected_type = str # Metaclass that uses an OrderedDict for class body class OrderedMeta(type):


网友评论