LazySelfAttribute
KrzysztofMadejski opened this issue · comments
Krzysiek Madejski commented
The problem
Reference other attribute, but modify it easily, ie.
owner = LazySelfAttribute(".ownership_chain", lambda chain: chain[-1].seller)
Proposed solution
Merge LazyAttribute and SelfAttribute.
class LazySelfAttribute(SelfAttribute):
def __init__(self, attribute_name, function, default=_UNSPECIFIED):
super().__init__(attribute_name, default)
self.function = function
def evaluate(self, instance, step, extra):
value = super().evaluate(instance, step, extra)
return self.function(value)
It has been working great for me.