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

Reply via email to