diff options
-rw-r--r-- | fg21sim/sky.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/fg21sim/sky.py b/fg21sim/sky.py index bae18a6..17ffd62 100644 --- a/fg21sim/sky.py +++ b/fg21sim/sky.py @@ -126,6 +126,58 @@ class SkyBase: else: raise NotImplemented + def __iadd__(self, other): + """ + Augmented arithmetic assignment: ``+=``. + + NOTE + ---- + These augmented arithmetic assignment methods should attempt + to do the operation in-place (modifying ``self``) and return + the result (which could be, but does not have to be, ``self``). + """ + if isinstance(other, self.__class__): + self.data += other.data + return self + elif isinstance(other, (int, float, np.ndarray)): + self.data += other + return self + else: + raise NotImplemented + + def __isub__(self, other): + """Augmented arithmetic assignment: ``-=``.""" + if isinstance(other, self.__class__): + self.data -= other.data + return self + elif isinstance(other, (int, float, np.ndarray)): + self.data -= other + return self + else: + raise NotImplemented + + def __imul__(self, other): + """Augmented arithmetic assignment: ``*=``.""" + if isinstance(other, self.__class__): + self.data *= other.data + return self + elif isinstance(other, (int, float, np.ndarray)): + self.data *= other + return self + else: + raise NotImplemented + + def __itruediv__(self, other): + """Augmented arithmetic assignment: ``/=``.""" + if isinstance(other, self.__class__): + self.data /= other.data + return self + elif isinstance(other, (int, float, np.ndarray)): + self.data /= other + return self + else: + raise NotImplemented + def __neg__(self): """Unary arithmetic operation: ``-``.""" return -self.data |