Python >> Tutoriel Python >  >> Python

Méthode magique Python __new__

object.__new__(cls[, ...])

__new__(cls) de Python la méthode magique crée une nouvelle instance de la classe cls . Les arguments restants sont passés au constructeur d'objet. La valeur de retour est l'objet nouvellement créé—une instance de cls .

Exemple de base

L'exemple suivant montre comment chaque fois que vous créez un objet de notre classe personnalisée My_Class , Python appelle le __new__() méthode magique.

class My_Class(object):
	def __new__(cls):
		print("Python is great!")
		return super(My_Class, cls).__new__(cls)

My_Class()

Sortie :

Python is great!

L'expression super(My_Class, cls).__new__(cls) est une approche standard pour utiliser le super() fonction intégrée pour appeler le __new__() méthode de la classe mère.

N'hésitez pas à regarder notre vidéo associée sur super() pour acquérir une compréhension supplémentaire :

Python __new__ contre __init__

Python __new__() crée et retourne une nouvelle instance alors que __init__() initialise l'état d'une instance.

  • Python __new__() est la méthode constructeur qui contrôle la création de la nouvelle instance. Elle est appelée en premier et renvoie une nouvelle instance de classe.
  • Python __init__() est la méthode d'initialisation pour définir les attributs (c'est-à-dire l'état) de l'instance nouvellement créée. Il est appelé après la création et ne renvoie rien, c'est-à-dire None .

Vous pouvez voir que __new__() est appelé avant __init__() dans l'exemple de code suivant :

class My_Class(object):
	def __new__(cls):
		print("Python is great!")
		return super(My_Class, cls).__new__(cls)

	def __init__(self):
		print("Finxter42")

My_Class()

Sortie :

Python is great!
Finxter42

N'hésitez pas à regarder notre vidéo explicative sur la méthode associée __init__() ici :

Nous avons utilisé quelques termes importants de la programmation orientée objet en Python pour expliquer nos exemples. Assurez-vous d'étudier la feuille de triche suivante (vous pouvez également télécharger le PDF ici).

Cliquez sur l'image pour obtenir la feuille de triche (s'ouvre dans un nouvel onglet).

Vous pouvez télécharger d'autres feuilles de triche ici :