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
Libérer: 2024-11-30 00:08:14
original
290 Les gens l'ont consulté

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
Copier après la connexion

"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
Copier après la connexion

"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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal