setting property to type other than what is given
Lee Harr
missive at frontiernet.net
Sat May 8 17:31:53 EDT 2004
On 2004-05-08, Lee Harr <missive at frontiernet.net> wrote:
>
> I am just starting to use properties, and wonder what you
> might think of this ...
>
>
> class RNumber(object):
> def __init__(self, n, nmin, nmax):
> self.nmin = nmin
> self.nmax = nmax
> self.n = n
>
> def _get_n(self):
> return self._n
>
> def _set_n(self, n):
> if n == 'max':
> self._n = self.nmax
> elif n == 'min':
> self._n = self.nmin
> else:
> self._n = min(self.nmax, n)
> self._n = max(self.nmin, self._n)
>
> n = property(_get_n, _set_n)
>
>
>>>> a = RNumber(5, 0, 10)
>>>> a.n
> 5
>>>> a.n = -3
>>>> a.n
> 0
>>>> a.n = 'max'
>>>> a.n
> 10
>>>> a.nmax = 50
>>>> a.n = 'max'
>>>> a.n
> 50
>
Could even go like this ...
class RNumber(object):
def __init__(self, n, nmin, nmax):
self.nmin = nmin
self.nmax = nmax
self.n = n
def _get_n(self):
n = self._n
if n == 'max':
n = self.nmax
elif n == 'min':
n = self.nmin
return n
def _set_n(self, n):
if n == 'max':
self._n = n
elif n == 'min':
self._n = n
else:
self._n = min(self.nmax, n)
self._n = max(self.nmin, self._n)
n = property(_get_n, _set_n)
>>> a = RNumber(5, 0, 10)
>>> a.n = 'max'
>>> a.n
10
>>> a.nmax = 12
>>> a.n
12
More information about the Python-list
mailing list