Python continue surprising me.
Is possible verify attribute's value using the annotation @ATTR.setter on set method, too you can modify attribute's return using the annotation @property on get method.
Finalizing this post, is possible with python, override classes' operators like c++.
See the example below. Details in references links.
References:
Is possible verify attribute's value using the annotation @ATTR.setter on set method, too you can modify attribute's return using the annotation @property on get method.
Finalizing this post, is possible with python, override classes' operators like c++.
See the example below. Details in references links.
class Div(object): def __init__(self, op, di): self.op = op self._di = di
# GET di @property def di(self): return self._di
# SET di @di.setter def di(self, value): if (value == 0): raise ValueError('Invalid value') else: self.di = value
# OPERATOR ADD def __add__(a, b): x = Div(0, 0) x.op = a.op + b.op x._di = a.di + b.di return x def __str__(self): return ("%s/%s") % (self.op, self.di) x = Div(1,3) y = Div(2,2) z = x + y print(x) print(y) print(z) x.di = 0
Execution's Result:
1/3 2/2 3/5 Traceback (most recent call last): File "/tmp/exemplo1.py", line 38, inx.di = 0 File "/tmp/exemplo1.py", line 15, in di raise ValueError('Invalid value') ValueError: Invalid value
References: