【文件属性】:
文件名称:在定义的时候初始化类的成员-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2021-06-11 11:14:07
Python cookbook 中文 参考
9.19 在定义的时候初始化类的成员
问题
你想在类被定义的时候就初始化一部分类的成员,而不是要等到实例被创建
后。
解决方案
在类定义时就执行初始化或设置操作是元类的一个典型应用场景。本质上讲,
一个元类会在定义时被触发, 这时候你可以执行一些额外的操作。
下面是一个例子,利用这个思路来创建类似于 collections 模块中的命名元组的
类:
import operator
class StructTupleMeta(type):
def __init__(cls, *args, **kwargs):
super().__init__(*args, **kwargs)
for n, name in enumerate(cls._fields):
setattr(cls, name,
property(operator.itemgetter(n)))
class StructTuple(tuple, metaclass=StructTupleMeta):
_fields = []
def __new__(cls, *args):