[Tutor] New keyword ?

orbitz at ezabel.com orbitz at ezabel.com
Sat Jun 19 12:19:53 EDT 2004


No, No


On Fri, 18 Jun 2004 14:29:56 +0200
Michele Alzetta <michele.alzetta at aliceposta.it> wrote:

> I'm still fiddling with timespans - only I've just found out that
> WxPython has something with the same name but fundamentally different
> ( WxPythons' is an abstract periods of time, mine is a period with a
> precise beginning and end, from which of course the abstract period can
> be obtained) .. so I've started calling my class Period.
> 
> Besides the _contains_ function, I've added an olaps function which
> returns true not only if a period is entirely contained in another, but
> also if it overlaps. Here is the code:
> 
> -----------------------------------------------------------------
> from datetime import datetime, date, timedelta
> 
> class Period(object):
>     
>     def __init__(self, startimetuple, endtimetuple):
>         self.starttime = datetime(*startimetuple)
>         self.endtime = datetime(*endtimetuple)
> 	self.isPeriod = True
>     
>     def __contains__(self, period):
>         try:
> 	    if period.isPeriod:
>                 return (self.starttime <= period.starttime) and \
>                        (self.endtime >= period.endtime)
> 	except AttributeError:
>             moment = datetime(*period)
> 	    return (self.starttime <= moment <= self.endtime)
>     
>     def length(self):
>         return self.endtime - self.starttime
>     
>     def olaps(self, period):
>         try:
>            if period.isPeriod:
>                 return (( self.starttime < period.starttime \
>                 < self.endtime) \
>                 or ( self.starttime < period.endtime < self.endtime ))
>         except AttributeError:
>                 moment = datetime(*period)
>                 return (self.starttime <= moment \
>  		<=    self.endtime)                
>     
> 
> As I understand it, the 'in' keyword calls my __contains__ function,
> e.g.
> 
> > week1 in fortnight1
> True
> 
> Whereas to call my olaps function I have to do this:
> 
> > periodinstance.olaps(otherinstance)
> True
> 
> Is it possible to create a new keyword (say, 'ovlps') to call my
> function like this:
> 
> > week1 ovlps fortnight
>  
> If it is possible, would it be desirable ?
> 
> -- 
> Michele Alzetta <michele.alzetta at aliceposta.it>
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list