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