I have a list with measurements, like:
[[Measurements(100, 0.3)], [Measurements(33, 0.5)]]
Then , I have a list with some criteria which contains list of measurements:
[Criteria(999, [[Measurements(100, 0.3)], [Measurements(33, 0.5)]])], [Criteria(999, [[Measurements(150, 0.3)], [Measurements(35, 0.5)]])]
Finally, I want to supply the above list as input and execute the code:
class Measurements(): def __init__(self, value, other): self.value = value self.other = other class Criteria(): def __init__(self, new_value, measurements): self.new_value = new_value self.measurements = measurements def method(self): # Here, I am iterating through all measurements # and replace the value according to criteria for idx, x in enumerate(self.measurements): if (self.measurements[idx].value > 20 and self.measurements[idx].value < 110): self.measurements[idx].value = self.new_value return self.measurements class Evaluate(): def __init__(self, criteria): self.criteria = criteria def execute(self): criteria = self.criteria # Here, I am iterating through all criteria # and call the method from criteria for i, c in enumerate(criteria): c.method() return c.measurements def main(): criteria = [ [Criteria(999, [[Measurements(100, 0.3)], [Measurements(33, 0.5)]])], [Criteria(999, [[Measurements(150, 0.3)], [Measurements(35, 0.5)]])] ] obs = (Evaluate(criteria).execute()) if __name__ == "__main__": main()
and I am receiving c.method() AttributeError: 'list' object has no attribute 'method'
I want my results to be the new corrected Measurements, so :
[[Measurements(999, 0.3)], [Measurements(999, 0.5)]], [Measurements(150, 0.3)], [Measurements(999, 0.5)]]