[Python-ideas] Reprs of classes and functions (original) (raw)

Serhiy Storchaka storchaka at gmail.com
Wed Feb 25 12:08:21 CET 2015


On 25.02.15 12:25, Steven D'Aprano wrote:

On Wed, Feb 25, 2015 at 10:12:03AM +0200, Serhiy Storchaka wrote:

What if change default reprs of classes and functions to just full qualified name module + '.' + qualname (or just qualname if module is builtins)? This will look more neatly. And such reprs are evaluable. Do you mean like this? repr(int) => 'int' repr(int.frombytes) => 'int.frombytes'

Yes, it is.

-1 on that idea.

The suggested repr gives no clue as to what kind of object they are. Are they functions, methods, classes, some kind of Enum-like constant or something special like None? That hurts the usefulness of object reprs at the interactive interpreter. And it leads to weirdness like this:

def spam(x): if not isinstance(x, int): raise TypeError('expected int, got %r' % x)

This is uncommon case and bugprone code. Don't write so. spam('x'*1000000) or spam(()) will produce unhelpful error messages.

Usually it is written as:

def spam(x): if not isinstance(x, int): raise TypeError('expected int, got %s' % type(x).name)



More information about the Python-ideas mailing list