Python,从实例中删除属性而不是从源中删除属性

时间:2021-03-15 13:07:27

标签: python class instance

我有以下三个类 measurementsubmeasurementenvironmentsubmeasurement 采用 measurement 的实例,environment 采用 submeasurement 的实例作为输入参数。

我想保持每个类的属性有序。因此我编写了方法 set_cls_as_attr,它应该转换:self.submeasurement.measurement --> self.measurement 并删除:self.submeasurement.measurement

class environment():
    def __init__(self, submeasurement):
        self.submeasurement = submeasurement
        self.set_cls_as_attr(submeasurement, 'measurement')

    def set_cls_as_attr(self, obj, cls_name):
        setattr(self, cls_name, getattr(obj, cls_name))
        print(obj.__class__.__name__ + '.' + cls_name)
        if hasattr(self, obj.__class__.__name__ ):
            if hasattr(eval('self.' + obj.__class__.__name__), cls_name):
                delattr(eval('self.' + obj.__class__.__name__), cls_name)

class measurement():
    def __init__(self):
        self.name = self.__class__.__name__

class submeasurement():
    def __init__(self, measurement):
        self.name = self.__class__.__name__
        self.measurement = measurement

meas=measurement()
sub_meas=submeasurement(meas)
env= environment(sub_meas)

这工作正常,但它也会删除 sub_meas.measurement,这是我不希望发生的。有没有办法做到这一点?我也试过 __dict__.pop('measurement') 但这也是一样的。

0 个答案:

没有答案
相关问题