[Python-Dev] [Python-checkins] r87445 - python/branches/py3k/Lib/numbers.py (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Mon Dec 27 01:01:21 CET 2010
- Previous message: [Python-Dev] [Python-checkins] r87445 - python/branches/py3k/Lib/numbers.py
- Next message: [Python-Dev] [Python-checkins] r87445 - python/branches/py3k/Lib/numbers.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Dec 27, 2010 at 3:13 AM, Éric Araujo <merwok at netwok.org> wrote:
Le 24/12/2010 02:08, Nick Coghlan a écrit :
On Fri, Dec 24, 2010 at 4:41 AM, eric.araujo <python-checkins at python.org> wrote:
Fix small inaccuracy: there is no index function
Yes, there is, it just isn't a builtin - it lives in the operator module. Defining object.index with operator.index seems pretty circular to me :) http://docs.python.org/dev/reference/datamodel#object._index does it, but it should be fixed IMO. The difference between int and index is also not clear.
Yes, the definition in the language reference could definitely be improved to mention the semantics first, and then reference operator.index second.
Possible wording "Indicates to the Python interpreter that the object is semantically equivalent to the returned integer, rather than merely supporting a possibly lossy coercion to an integer (i.e. as the int method allows for types like float and decimal.Decimal). This allows non-builtin objects to be used as sequence indices, elements of a slice definition, multiplies in sequence repetition, etc. Can be invoked explicitly from Python code via operator.index()"
Removing the circularity from the definitions of index and operator.index doesn't have a great deal to do with the docstrings in numbers.py, though.
def index(self): - """index(self)""" + """someobject[self]""" return int(self)
Changing the docstring to say "operator.index(self)" would be the clearest solution here. I disagree. add is documented as implementing +, not operator.add.
That's because "+" is the idiomatic spelling. operator.index is the Python level spelling of obj.index() - there is no other way to spell it (other than calling the method explicitly, which is subtly different).
(Choosing to accept arbitrary index objects as integer equivalents is up to the object being indexed, just like interpreting slices is - a dict, for example, will never invoke index methods). I honestly don’t know what the best fix is. We could copy the doc from datamodel (“called whenever Python needs an integer object (such as in slicing, or in the built-in bin(), hex() and oct() functions)”). I’ve been told on IRC to let Mark Dickison decide how to fix the docstrings in the numbers module (deleting them being of course an option: magic methods are documented in the language reference, they don’t need docstrings).
Indeed. However, as a reference module for the numeric tower, it makes a certain amount of sense to keep the docstrings in this particular case.
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message: [Python-Dev] [Python-checkins] r87445 - python/branches/py3k/Lib/numbers.py
- Next message: [Python-Dev] [Python-checkins] r87445 - python/branches/py3k/Lib/numbers.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]