web-dev-qa-db-fra.com

Classe Nom de classe (objet), quelle sorte de mot est "objet" en python?

Lorsque je crée un module avec son seul contenu:

class Classname(randomobject):
    pass

Et j'essaie d'exécuter le fichier .py du module que l'interprète indique que randomobject n'est pas défini.

Mais quand je fais:

class Classname(object):
    pass

Le module fonctionne juste bien. Donc, si object n'est pas un mot clé, alors qu'est-ce que c'est?

35
Bentley4

object est une variable (globale). Par défaut, il est lié à une classe intégrée qui est la racine de la hiérarchie de type.

(Cela conduit à la propriété intéressante que vous pouvez prendre tout type intégré et utiliser le __bases__ Propriété pour atteindre le type appelé objet).

Tout ce qui est intégré qui n'est pas un mot clé ou un opérateur n'est un identifiant.

19
Marcin

object est un identifiant qui fait référence à un type intégré.

Contrairement à de nombreuses autres langues, il n'y a pas de types primitifs dans Python. Tout est un objet, y compris tous les types de données.

Je ne sais pas pourquoi vous êtes attendu hériter de randomobject pour travailler.

7
Taymon

Les trois déclarations de classe suivantes sont identiques dans Python 3

class Classname(object):
    pass

class Classname():
    pass

class Classname:
    pass

Eh bien, il y aura mineur différences , mais pas fondamentalement important car la classe d'objet est la base de tous.

Si vous envisagez d'écrire Python Code Agnostic (Python2 et Python3 Agnostic), vous pouvez utiliser la première déclaration.

6
prosti

object est la classe de base à partir de laquelle vous héritez lors de la création d'une classe de style neuve dans Python 2.

5
Kien Truong