首页 > 解决方案 > 使用元类定义对象实例属性

问题描述

我正在尝试使用元类来生成一个类,该类的对象具有实例属性。这是预期的结果:

class Foo:
    def __init__(self):
        self._var_a = None
        self._var_b = None

然而; 我不明白怎么做。这是我所拥有的:

# Emulate inbound
_regs = dict(Foo=dict(_var_a=None, _var_b=None))

class MyMeta(type):
    def __new__(cls, name, bases, dct, **kwargs):
        return super(MyMeta, cls).__new__(cls, name, bases, dct)

for key, val in _regs.items():
    globals()[key] = MyMeta(key, (), val)

但是val结果是类属性,因此每个实例都Foo使用这些属性,而不是我想要得到的结果。

标签: pythonpython-3.xmetaprogramming

解决方案


推荐阅读