Maison >développement back-end >Tutoriel Python >Pourquoi mon constructeur de classe Python échoue-t-il avec « TypeError : Sample() ne prend aucun argument » ou « AttributeError » ?
Confusion avec la dénomination des constructeurs de classe :
Lors de la construction de classes, les nouveaux programmeurs Python rencontrent souvent des erreurs liées à des constructeurs de classes mal nommés. Deux fautes de frappe courantes utilisent "def __int__" au lieu de "def __init__" ou "def _init_" au lieu de "def __init__."
"def __int__":
Le constructeur de classe doit être nommé "__init__" avec deux traits de soulignement de chaque côté. L'utilisation de "def __int__" attribue la fonction de conversion d'entier à la classe, ce qui entraîne des erreurs lors de la tentative d'instancier la classe avec des arguments.
class Example: def __int__(self, parameter): # Incorrect self.attribute = parameter
"def _init_":
L'utilisation de "def _init_" entraîne également des erreurs car il ne correspond pas au constructeur attendu name.
class Example: def _init_(self, parameter): # Incorrect self.attribute = parameter
"TypeError: Exemple() ne prend aucun argument":
Lors de la tentative de création d'une instance de la classe, l'erreur "TypeError: Exemple () ne prend aucun argument" se produit car un nom de constructeur incorrect a attribué la fonction de conversion entière.
"AttributeError : L'objet 'Exemple' n'a pas d'attribut 'attribute'":
Cette erreur indique que l'instance de classe n'a pas l'attribut attendu. La raison en est qu'un nom de constructeur incorrect n'a pas défini l'attribut dans la classe.
Prévention :
Pour éviter ces erreurs, assurez-vous toujours que le constructeur de la classe est correctement nommé "__init__". La relecture et la formation sont essentielles pour détecter ces fautes de frappe. De plus, avoir pour convention de placer "__init__" comme première méthode de la classe peut aider à éviter les erreurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!