【发布时间】:2017-09-26 19:43:26
【问题描述】:
我正在使用元类设置类属性fields:
class MyMeta(type):
def __new__(mcs, name, bases, clsdict):
clsdict['fields'] = {k: v
for k, v in clsdict.items()
if <my_condition>}
return super(MyMeta, mcs).__new__(mcs, name, bases, clsdict)
class MyBaseClass(metaclass=MyMeta):
fields = {}
以下实例化导致预期结果:
class SubClass(MyBaseClass):
param1 = 1 # meets <my_condition>
>>> SubClass.fields
{param1: 1}
但是如果我现在继承SubClass,fields 是空的:
class SubSubClass(SubClass):
pass
>>> SubSubClass.fields
{}
如何更新继承层次结构中所有类的 classdict,以便从基类更新 fields 变量?
【问题讨论】:
标签: python python-3.x inheritance metaclass