Python:动态地向类添加属性

时间:2020-04-18 14:15:58

标签: python class dynamic properties attributes

我想通过添加属性和类属性来动态地修改类。 确实必须是动态的,因为我正在构建一个符号执行引擎,因此 这些类是用户定义的,我无法修改代码。

例如,假设用户定义的类是下一个:

class X:
    def __init__(self, data):
        self.data = data

我要达到的目的是,但是要明确一点:

class X:

    _engine = None

    def __init__(self, data):
        self.data = data

    @property
    def data(self):
        return self._engine.my_get_method(self, "data")

    @data.setter
    def data(self, value):
        return self._engine.my_set_method(self, "data", value)

所以我将每个get或set都关联到data属性。

在引擎中,我有类似的东西,但是我找不到办法 设置属性:

class Engine:

    def my_get_method(self, attr_name):
        ...

    def my_set_method(self, attr_name, value):
        ...

    def modify_dinamically(self, the_class):
        for attr_name in class_attr_names:
            setattr(the_class, "_engine", self)
            setattr(the_class, attr_name, property(...)) # set the property in some way

注意事项:调用引擎集并获取时,必须将实例和属性名称作为参数传递。

有没有办法做到这一点?

0 个答案:

没有答案