On Monday 27 October 2003 04:22, Greg Ewing wrote: > Alex Martelli <aleaxit at yahoo.com>: > > Exactly the same underlying reason as a bug I just opened on > > SF: if x is an instance of a class X having __mul__ but not > > __rmul__, 3*x works (just like x*3) but 3.0*x raises TypeError > > Seems to me the bug there is not giving X an __rmul__ > method and yet expecting y*x to work at all. The fact > that it happens to work in some cases is an accident > that should not be relied upon. No, the bug is that it works in some cases where it should fail (and, secondarily, that -- where it does fail -- it gives a weird error message). In other words, the bug (in Python) is that "accident". Nobody's asking for 3.0*x to work where x is a user-coded type without an __rmul__; rather, the point is that 3*x should fail too, and ideally they'd have the same clear error message as 3+x gives when the type has no __radd__. Doesn't seem trivial to fix (though I hope I'm missing something obvious) and doesn't affect perfect user-programs, but I do think it should be fixed because it's sure extremely mysterious and could send a developer on wild goose chases when met in the course of development. Alex
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4