Bugs item #1668540, was opened at 2007-02-25 20:06
Message generated for change (Comment added) made by gbrandl
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1668540&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Type/class unification
Group: Python 2.5
>Status: Closed
>Resolution: Invalid
Priority: 5
Private: No
Submitted By: netimen (netimen)
Assigned to: Nobody/Anonymous (nobody)
Summary: I can't change attribute __op__ in new-style classes

Initial Comment:
I tried to use multimethod module from peers package available at 
http://viral.media.mit.edu/peers/peers-0.20050929.tar.gz to create several 
__mul__ operators in a new-style class and experienced this problem.

In new-style class I can't change the attribute __op__. Even if I change it 
with setattr, genuine __op__ will be called.

For instance, if I set __mul__ operator to method object new_mul and write

setattr(obj, '__mul__', new_mul)
obj *= 1 # __mul__ will be called.
# But
obj.__mul__(1) # new_mul will be called.

With common methods and with old-style classes all works properly.

P.S. Sorry for my English

----------------------------------------------------------------------

>Comment By: Georg Brandl (gbrandl)
Date: 2007-02-25 20:10

Message:
Logged In: YES 
user_id=849994
Originator: NO

These special methods are looked up upon the type for new-style classes.
This won't change.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1668540&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to