implementing descriptors

dippim david.mcwright at usbfmi.com
Fri Aug 14 09:29:22 EDT 2009


On Aug 14, 5:45 am, Jean-Michel Pichavant <jeanmic... at sequans.com>
wrote:
> Emile van Sebille wrote:
> > On 8/13/2009 3:17 PM dippim said...
> >> I am new to Python and I have a question about descriptors.  If I have
> >> a class as written below, is there a way to use descriptors to be
> >> certain that the datetime in start is always before the one in end?
>
> >> class foo(object):
> >>    def __init__(self,a = None,b = None)
> >>       self.start = a
> >>       self.end = b
>
> >> from datetime import datetime
> >> c = datetime(2009,8,13,6,15,0)
> >> d = datetime(2009,8,14,12,0,0)
> >> afoo = foo(c,d)
>
> >> For instance, if the following code were run, I would like to instance
> >> of foo to switch the start and end times.
>
> >> afoo.start = datetime(2010,8,13,6,15,0)
>
> >> I was thinking of using the __set__ descriptor to catch the assignment
> >> and reverse the values if necessary,
>
> > why not...
>
> > class foo(object):
> >    def __init__(self,a = None,b = None)
> >       self.start = min(a,b)
> >       self.end = max(a,b)
>
> > Emile
>
> or
>
> class foo(object):
>     def __init__(self, start, end)
>        self.start = start
>        self.end = end
>
> Problem solved by design :o)
>
> JM

Emile and JM,

   Thanks for the response.  However, these solution only work at
instantiation.  If I change the value of start or end after
instantiation, then I can make start or end whatever I like without
regard to order.




More information about the Python-list mailing list