En Sat, 14 Mar 2009 00:31:55 -0200, Lie Ryan <lie.1...@gmail.com> escribió:
Gabriel Genellina wrote:
En Fri, 13 Mar 2009 17:12:49 -0200, alex goretoy <aleksandr.gore...@gmail.com> escribió:
list( ( self.__setattr__(x.replace("b_",""),getattr(B,x)) for x in
dir(B) if x.startswith("b_") ) )
__special__ methods are an implementation detail that you should not use explicitely; instead of obj.__setattr__(name, value) use setattr(obj, name, value).

Except if you want to override the special methods like in operator overloading.

Perhaps I should have written "you should not *call* __special__ methods explicitely". Even if one overrides, e.g., __setitem__, the right way to use it (or call, or invoke, or operate) is still a[x] = y I've seen plenty of code spelling it a.__setitem__(x, y) instead. It is usually slower, exposes an implementation detail, is far less clear, it's not exactly the same thing, prevents the interpreter from doing many optimizations... I don't get *why* someone would like to write that. Does it look "cool"? Is it some kind of "Look, ma, I know those hidden names!" syndrome? Is it contagious?

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to