[Tutor] __and_ and and_
Emile van Sebille
Emile van Sebille" <emile@fenx.com
Mon, 18 Oct 1999 17:54:35 -0700
Arne,
A little playing from where you started got me to this.
You can then write
c = a + b # to show the union
--- or ---
c = a - b # for the intersection
#-------------------
class Bool:
def __init__(self, list=[]):
self.list = list
def __add__(self, other):
list = self.list + filter(lambda x, y=self.list: x not in y,
other.list)
return Bool(list)
def __sub__(self, other):
list = filter(lambda x, y=self.list: x in y, other.list)
return Bool(list)
b = Bool([1, 2, 3, 4, 5])
a = Bool([2, 3, 10, 5])
print (a + b).list
print (a - b).list
#----------results
[2, 3, 10, 5, 1, 4]
[2, 3, 5]
Emile van Sebille
emile@fenx.com
-------------------
----- Original Message -----
From: Arne Mueller <a.mueller@icrf.icnet.uk>
To: tutor <tutor@python.org>
Sent: Monday, October 18, 1999 9:57 AM
Subject: [Tutor] __and_ and and_
> Hi All,
>
> I've a problem with redefining the 'and' operator for a specific
class.
>
> Here's some code that does not work:
>
> class Bool:
>
> def __init__(self, list=[]):
> self.list = list
>
> def __and__(self, other):
> list = filter(lambda x, y=self.list: x in y, other.list)
> return Bool(list)
>
> b = Bool([1, 2, 3, 4, 5])
> a = Bool([2, 3, 10, 5])
> c = a and b
> print c.list
> [1, 2, 3, 4, 5]
>
> The expected result is:
> [2, 3, 5]
>
> The following class definition works as expected:
>
> class Bool:
>
> def __init__(self, list=[]):
> self.list = list
>
> def and_(self, other):
> list = filter(lambda x, y=self.list: x in y, other.list)
> return Bool(list)
>
> b = Bool([1, 2, 3, 4, 5])
> a = Bool([2, 3, 10, 5])
> c = a.and_(b)
> print c.list
> [2, 3, 5]
>
> Why doesn't the 'in-operator' '__and__' behave the same way as 'and_'?
>
> It'd be much better object oriented desgin to say:
>
> c = a and b
>
> instead
>
> c = a.and_(b) # ugly
>
>
> Any explanations or better any solutions?
>
> thank you very much for your help,
>
> Arne
>
> _______________________________________________
> Tutor maillist - Tutor@python.org
> http://www.python.org/mailman/listinfo/tutor
>
>