Python >> Tutoriel Python >  >> Python

Fonction Python object()

object() intégré de Python La fonction ne prend aucun argument et renvoie un nouvel objet sans caractéristique, la base et le parent de toutes les classes. En tant que tel, il fournit toutes les méthodes communes à toutes les instances de classe Python telles que __repr__() et d'autres méthodes "dunder". Cependant, contrairement à tous les non-object instances, vous ne pouvez pas attribuer d'attributs arbitraires à une instance de la classe d'objets, car Python n'a pas la méthode __dict__() .

Argument -
Valeur de retour object Renvoie une nouvelle instance du object classe.
>>> object()
<object object at 0x0000020A4201E3A0>
>>> help(obj)
Help on object object:

class object
 |  The most base type

Deux objets créés avec object() sont toujours uniques, ce qui en fait un excellent choix pour la mise en œuvre du modèle sentinelle :

>>> object() == object()
False
>>> object() is object()
False

Vidéo Objet Python()

Quel est le but de Python object() ?

Le fait que l'instance renvoyée par le constructeur object() ne fournisse pas d'implémentation de la méthode __dict__() signifie que vous ne pouvez pas ajouter d'attributs à l'instance de l'objet. Il peut vous sembler que cela le rend essentiellement inutile - vous ne pouvez pas créer votre classe personnalisée avec des méthodes et des attributs personnalisés. Cependant, la fonction object() est souvent utilisée pour créer un objet sentinelle ou des données factices lorsque None ne peut pas être utilisé, par exemple si None fait partie des données valides dans une liste et vous souhaitez itérer jusqu'à ce que vous trouviez les données sentinelles object() .

Ensuite, je vais vous montrer un exemple :


Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners

Voici donc un exemple d'utilisation de object() comme données sentinelles. Nous utilisons une seule instance d'objet comme entrée pour le iter() intégré fonction qui continue à itérer et demande à l'utilisateur une entrée jusqu'à ce que l'utilisateur entre 'stop' . Ce n'est qu'alors que l'itérateur fonctionne step() renvoie l'objet "factice" sentinelle qui provoque la fin de la boucle principale :

sentinel = object()

def step():
    user_input = input('your number: ')
    if user_input == 'stop':
        return sentinel
    return user_input

for user_input in iter(step, sentinel):
    print('your input: ', user_input)

L'un de mes tests s'est déroulé comme suit :

>>> your number: 2
your input:  2
your number: 2
your input:  2
your number: 2
your input:  2
your number: 42
your input:  42
your number: stop

Il continue de boucler jusqu'à ce que je mette 'stop' . Cela amène la fonction à renvoyer l'objet sentinelle qui termine l'itérateur.

L'avantage d'utiliser un object() unique objet en tant qu'objet sentinelle par rapport à None est-ce object() crée un objet unique mais None pas.

Résumé

object() intégré de Python La fonction ne prend aucun argument et renvoie un nouvel objet sans caractéristique, la base et le parent de toutes les classes.

En tant que tel, il fournit toutes les méthodes communes à toutes les instances de classe Python telles que __repr__() et d'autres méthodes "dunder".

Cependant, contrairement à tous les non-object instances, vous ne pouvez pas attribuer d'attributs arbitraires à une instance de la classe d'objets, car Python n'a pas le "dunder" __dict__() méthode.

>>> obj = object()
>>> obj.a = 2
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    obj.a = 2
AttributeError: 'object' object has no attribute 'a'

Vous voulez continuer à améliorer vos compétences Python ? Consultez nos feuilles de triche Python gratuites :