# -*- encoding: utf-8 -*-
import json
'''
第34条: 用元类来注册子类
关键:
1 元类
作用: 在程序中自动注册类型,对于需要反向查询的场合有用。
可以在简单的标示符与对应的类之间建立映射关系。
应用场景:
1) 将python对象表示为JSON格式的序列化数据,即
将指定对象转换成JSON字符串。
2) 开发者继承某个类的时候,程序自动调用registerCLass方法
,并将新的子类注册好。
原因: 定义完子类的class语句体后,元类可以拦截这个新的子类,
就可以注册新的类型
2 元类中注册子类的用法
示例:
class Meta(type):
def __new__(meta, name, bases, class_dict):
cls = type.__new__(meta, name, bases, class_dict)
# 获取新的类后,注册该类
registerClass(cls)
return cls
class RegisteredSerializable(BetterSerializable):
__metaclass__ = Meta
class Vector3D(RegisteredSerializable):
def __init__(self, x, y, z):
super(Vector3D, self).__init__(
x, y, z
)
self.x = x
self.y = y
self.z = z
def useMetaclass2():
v3 = Vector3D(1, 2, 3)
print "Before: {value}".format(
value=v
Effective Python 读书笔记: 第34条: 用元类来注册子类
最新推荐文章于 2020-08-18 20:57:31 发布