In [13]: Plop().__class__
Out[13]: <class '__main__.Plop'>
In [14]: Plop.__class__
Out[14]: <type 'type'>
Toute (nouvelle) classe est sensée être déclarée comme hériter de 'object' (new style class). Une classe est donc également un objet.
Devoir 'object' manuellement est effectivement p-e pas très joli, mais cela a été fait pour garder la compatibilité avec les versions précédentes de python. Amha, le gain "garder compatibilité avec une legere surcharge syntaxique" est nettement plus intéressant que "avoir les classes comme des objets" qui en pratique est certe joli mais moins souvent utile que une bonne compatibilité ascendante.
Python 3k corrige cela, hériter de 'object' n'est plus nécessaire.
[^] # Re: Python vs Ruby
Posté par Pierre Palatin . En réponse au journal Choisir un framework web.... Évalué à 2.
In [12]: class Plop(object):
....: pass
....:
In [13]: Plop().__class__
Out[13]: <class '__main__.Plop'>
In [14]: Plop.__class__
Out[14]: <type 'type'>
Toute (nouvelle) classe est sensée être déclarée comme hériter de 'object' (new style class). Une classe est donc également un objet.
Devoir 'object' manuellement est effectivement p-e pas très joli, mais cela a été fait pour garder la compatibilité avec les versions précédentes de python. Amha, le gain "garder compatibilité avec une legere surcharge syntaxique" est nettement plus intéressant que "avoir les classes comme des objets" qui en pratique est certe joli mais moins souvent utile que une bonne compatibilité ascendante.
Python 3k corrige cela, hériter de 'object' n'est plus nécessaire.