【发布时间】:2019-10-16 16:52:54
【问题描述】:
当我阅读 Python Cookbook recipe 9.14 的讨论时,它说我必须在制作最终类对象时将 OrderedDict 转换为 dict 实例。我必须这样做还是使用 OrderedDict 可以吗?
我试过这个,将 OrderedDict 传递给类型构造函数,它不会引发任何异常
class OrderedMeta(type):
def __new__(cls, clsname, bases, attr_dict):
order = []
for name, value in attr_dict.items():
if isinstance(value, Typed):
value._name = name
order.append(name)
attr_dict['_order'] = order
return type.__new__(cls, clsname, bases, attr_dict)
@classmethod
def __prepare__(cls, clsname, bases):
return OrderedDict()
书中的代码
class OrderedMeta(type):
def __new__(cls, clsname, bases, attr_dict):
d = dict(attr_dict)
order = []
for name, value in attr_dict.items():
if isinstance(value, Typed):
value._name = name
order.append(name)
d['_order'] = order
return type.__new__(cls, clsname, bases, d)
@classmethod
def __prepare__(cls, clsname, bases):
return OrderedDict()
【问题讨论】:
标签: python-3.x class oop metaclass