On 01/02/2014 02:40 PM, Steven D'Aprano wrote:
On Thu, Jan 02, 2014 at 11:12:30AM +0100, spir wrote:
Hello tutorians,
Am I missing something or don't classes know how they're called (unlike
funcs, which have a __name__ attribute, very practicle)? Is there a way to
get it otherwise?
py> type(42).__name__
'int'
py> class Spam:
... pass
...
py> Spam.__name__
'Spam'
The point is to have a super-type define a general __repr__ like eg:
class SuperType:
# ...
def __repr__ (sef):
return "%s(stuff)" % (self.__class__.__name__, stuff)
That works for me. Is there some reason you think it doesn't work?
Sorry again, the reason is dir() does not show __name__ for classes, while it
does for funcs. See answer to Dominik. I guess I've now found it:
class C: pass
...
dir(C) # note __dir__ below:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '__weakref__']
dir(C.__dir__) # here is __name__ :
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__get__', '__getattribute__', '__gt__', '__hash__',
'__init__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__objclass__',
'__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__']
Denis
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor