我有以下三个类 measurement
、submeasurement
和 environment
。 submeasurement
采用 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')
但这也是一样的。