exec
Peter Otten
__peter__ at web.de
Thu Mar 1 12:14:54 EST 2012
Rolf Wester wrote:
> The reason to use exec is just laziness. I have quite a lot of classes
> representing material data and every class has a number of parameters.
> The parameter are Magnitude objects (they have a value and a unit and
> overloaded special functions to correctly handle the units). I want to
> have getter functions that either return the Magnitude object or just the
> value:
>
> iron = Iron()
> iron.rho(0) => value
> iron.rho() => Magnitude object
>
> def rho(self, uf=1):
> if uf == 1:
> return self._rho
> else:
> return self._rho.val
>
> And because this would mean quite a lot of writing I tried to do it with
> exec.
Make the Magnitude class callable then:
>>> class Magnitude(object):
... def __init__(self, value):
... self.value = value
... def __call__(self, uf=1):
... if uf == 1:
... return self
... return self.value
...
>>> class Iron(object):
... def __init__(self):
... self.rho = Magnitude(42)
...
>>> iron = Iron()
>>> iron.rho()
<__main__.Magnitude object at 0x7fb94062be10>
>>> iron.rho(0)
42
More information about the Python-list
mailing list