1495 votes

Hérite de la classe python object

Y a-t-il une raison pour une déclaration de classe hérite de `` ?

Je viens de trouver un code qui fait ça et je ne peux pas trouver une bonne raison pourquoi.

560voto

Yarin Points 18186

Python 3.x:
class MyClass(object): = new-style classe
class MyClass: = new-style de classe (implicitement hérite de l'objet)

Python 2.x:
class MyClass(object): = new-style classe
class MyClass: = ANCIENNE CLASSE

Explication:

Lors de la définition des classes de base en Python 3.x, vous êtes autorisé à déposer l'objet à partir de la définition. Cependant, cela peut ouvrir la porte à une très difficile à suivre, problème...

Python introduite nouveau style de classes de retour en Python 2.2, et, aujourd'hui, de style ancien classes sont vraiment très vieux. Discussion de la vieille-classes de style est enterré dans le 2.x docs, et inexistant dans le 3.x docs.

Le problème est, la syntaxe de style ancien classes en Python 2.x est la même que la syntaxe alternative pour les nouvelles classes de style en Python 3.x. Python 2.x est encore très largement utilisé (par exemple, GAE, Web2Py), et tout le code (ou codeur) inconsciemment apporter 3.x-style définitions de classe en 2.x code va finir avec un certain sérieux désuet des objets de base. Et parce que style ancien classes ne sont pas sur le radar, il est probable qu'ils ne savent pas ce qui leur arrive.

Donc suffit de préciser le chemin le plus long et économisez de l'2.x developer les larmes.

405voto

Jerub Points 17488

Oui, c'est un "nouveau style" de l'objet. C'était une fonctionnalité introduite dans python2.2.

Nouveau style objets ont un objet différent du modèle classique des objets, et certaines choses ne fonctionnent pas correctement avec l'ancien style des objets, par exemple, super(), @biens et des descripteurs. Voir cet article pour une bonne description de ce qu'un nouveau style de classe est:

http://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html

DONC, le lien pour une description des différences: http://stackoverflow.com/questions/54867/old-style-and-new-style-classes-in-python

33voto

knitti Points 3258

Oui, c’est historique. Sans ses classes de style ancien.

Si vous utilisez `` sur un objet de style ancien, vous obtenez juste « instance ». Vous obtenez un objet nouveau style sa classe

1voto

SLaks Points 391154

Cela crée un nouveau style de classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X