La différence entre l'objet et l'exemple en python?
Ce qui se passe dans python2.7
Je suis en train de travailler sur l'idée de méta-classe en python, presque tout le tutoriel se référer objet instance d'une classe, en python. Cependant, lors de la lecture avec la classe A(): la forme de la définition d'une classe, j'ai vu ceci:
class ClsDef1():
pass
C1 = ClsDef1()
print C1
<__main__.ClsDef1 instance at 0x2aea518>
class ClsDef2(object):
pass
C2 = ClsDef2()
print C2
<__main__.ClsDef2 object at 0x2ae68d0>
Cela signifie que lorsque vous créez une instance d'une classe qui n'est pas inhérente à l'objet, l'instance est une instance, mais quand une classe est inhérente à l'objet, l'instance de la classe est un objet?
Quelqu'un pourrait-il expliquer la différence? Dans la vraie vie, qui dois-je utiliser?
Merci!
stackoverflow.com/a/6380430/1318661 Voici un décent réponse.
Python 2 et Python 3? Dans ce dernier, les deux sont en effet équivalentes (et vous pouvez supprimer les parenthèses si vous n'avez pas de nom d'une classe de base).
double possible de style Ancien et nouveau style de classes en Python
Python 2 et Python 3? Dans ce dernier, les deux sont en effet équivalentes (et vous pouvez supprimer les parenthèses si vous n'avez pas de nom d'une classe de base).
double possible de style Ancien et nouveau style de classes en Python
OriginalL'auteur DiamRem | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
C'est la différence entre un style nouveau et vieux style de classes, ce qui est expliqué plus en détail dans la documentation. Fondamentalement, en Python 2.x vous devez vous assurer de toujours hériter de l'objet, de sorte que vous obtenir un nouveau type de classe. En Python 3, de style ancien classes ont disparu complètement.
OriginalL'auteur Daniel Roseman
Réponse courte: En python, tous les objets ont un type (retourné par type(x)) qui est également un objet.
si " t "est un type d'objet, alors que son type est le type spécial "type". (Type(type(x)) est de type) est toujours Vraie.
Dans les anciennes classes, un définis par l'utilisateur "classe" est un objet de type "classobj" - et chaque instance de classe est un objet de type "instance". I. e. il existe deux types intégrés 'classobj" et "instance" qui mettent en œuvre des classes. Le lien établi à partir d'une instance de sa classe est par l'intermédiaire de son
__class__
membre.Avec de nouvelles classes: classes définies par l'Utilisateur sont en fait un nouveau type d'objets (leur type 'type', pas 'classobj') et lorsque vous créez des instances d'entre eux, le type() de chaque instance de la classe de l'objet. Ainsi, des objets de différentes classes définies par l'utilisateur ont maintenant des types distincts. Et les classes sont en gros sur le même pied d'égalité que tous les builtin types; avec les anciennes classes il y a une structure à part, par exemple->classe et objet->type, de nouvelles classes d'utilisation de l'objet->type pour les deux.
Il y a beaucoup plus dans les docs, mais c'est le noyau dur.
OriginalL'auteur greggo
Pas à la différence de l'ambiguïté entre "classe" et "type", "instance" est synonyme d ' "objet". Pensez-y de cette façon: les objets sont des instances de types. Ainsi, "42 est une instance du type int" est équivalent à "42 est un objet int". J'ai l'habitude d'utiliser "instance" et "objet" de façon interchangeable.
OriginalL'auteur user8310957