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 » ?

Pourquoi mon constructeur de classe Python échoue-t-il avec « TypeError : Sample() ne prend aucun argument » ou « AttributeError » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 00:08:14255parcourir

Why Does My Python Class Constructor Fail with `TypeError: Example() takes no arguments` or `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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn