[Python Basic Literacy] Quelles sont les utilisations et les différences du paramètre self, de la méthode __init__ et de la méthode .__str__ ?


brève description

Voici un tableau Markdown qui compare selfet __init__compare sous plusieurs angles :__str__

self __init__ __str__
taper paramètre méthode méthode
effet faisant référence à l'objet d'instance lui-même initialiser l'instance Définit la représentation sous forme de chaîne de l'instance
prototype de fonction def method(self, ...) def __init__(self, ...) def __str__(self)
valeur de retour Aucun (utilisé comme paramètre) Aucun (pour l'initialisation) chaîne
Est-ce nécessaire Oui (dans les méthodes d'instance) Non (mais généralement obligatoire) Non (mais requis si l'impression ou la conversion en chaîne est requise)
scènes à utiliser Accéder ou modifier les propriétés d'instance dans les méthodes d'instance, ou appeler d'autres méthodes d'instance Définir l'état initial lors de la création d'une nouvelle instance À utiliser lors de l'impression d'une instance ou de la conversion d'une instance en chaîne

Ce tableau fournit une comparaison de base de self, __init__et __str__. L'utilisation exacte peut varier en fonction de vos besoins et de la conception de la classe.


En Python, selfet __init__sont __str__des éléments communs dans les définitions de classe. Leurs objectifs respectifs et leurs différences sont les suivants :

  1. self : en Python, selfil s'agit d'un nom conventionnel utilisé pour désigner l'objet instance lui-même. Lorsque vous définissez une méthode d'une classe, le premier paramètre est généralement nommé self, qui représente l'instance de la classe. Grâce à lui self, vous pouvez accéder aux propriétés d'instance et les modifier, ou appeler d'autres méthodes d'instance.

    class MyClass:
        def my_method(self):
            print("This is a method of the instance: ", self)
    
  2. init :__init__est une méthode spéciale appelée méthode constructeur de la classe. __init__Les méthodes sont automatiquement appeléeslorsque vous créez une nouvelle instance d'une classeVous pouvez__init__définir l'état initial de l'instance dans la méthode, par exemple en initialisant les propriétés de l'instance.

    class MyClass:
        def __init__(self):
            self.my_attribute = "Hello, world!"
    
  3. str :__str__également une méthode spéciale qui doit renvoyer une chaîne représentant l'instance. La méthode est appeléelorsque vous utilisezprintla fonction pour imprimer une instance ou utilisezstrla fonction pour convertir une instance en string__str__

    class MyClass:
        def __init__(self, my_attribute):
            self.my_attribute = my_attribute
    
        def __str__(self):
            return "MyClass with my_attribute: " + self.my_attribute
    
    my_instance = MyClass("Hello, world!")
    print(my_instance)  # 输出:MyClass with my_attribute: Hello, world!
    

En général, selfet __init__sont __str__des éléments importants dans la définition de classe Python, qui sont utilisés pour faire référence à l'instance elle-même, initialiser l'instance et définir la représentation sous forme de chaîne de l'instance.

prototype

En Python, les prototypes de fonction de , et sont généralement les selfsuivants__init__ :__str__

  1. self : selfPas une fonction, mais un paramètre utilisé dans une méthode d'une classe pour faire référence à l'objet instance lui-même. Lors de la définition d'une méthode d'une classe, elle est généralement donnée selfcomme premier paramètre :

    def some_method(self, other_arguments):
        # 方法体
    
  2. init :__init__est une méthode spéciale utilisée pour initialiser une nouvelle instance d'une classe. Son prototype de fonction est le suivant :

    def __init__(self, other_arguments):
        # 方法体
    

    Voici other_argumentsles autres paramètres que vous devez passer à __init__la méthode.

  3. str :__str__également une méthode spéciale utilisée pour renvoyer une chaîne représentant une instance. Son prototype de fonction est le suivant :

    def __str__(self):
        # 方法体,返回一个字符串
    

    Notez que __str__la méthode ne prend aucun selfargument autre que , et doit renvoyer une chaîne.

Dans ces prototypes de fonction, selfle paramètre est obligatoire car il représente une instance de la classe. Pour __init__la méthode et __str__, vous pouvez ajouter d'autres paramètres ou modifier la valeur de retour selon vos besoins.

scènes à utiliser

Voici des scénarios d'utilisation courants pour selfet __init__en __str__Python :

  1. self : selfutilisé comme premier paramètre dans la méthode de la classe pour faire référence à l'objet instance lui-même. Cela permet aux méthodes d'instance d'accéder aux propriétés d'instance et de les modifier, ou d'appeler d'autres méthodes d'instance. Par exemple, si vous écrivez une classe qui représente un compte bancaire, vous devrez peut-être selfaccéder au solde du compte et le modifier à l'aide de

    class BankAccount:
        def __init__(self, initial_balance):
            self.balance = initial_balance
    
        def deposit(self, amount):
            self.balance += amount
    
        def withdraw(self, amount):
            if amount <= self.balance:
                self.balance -= amount
            else:
                print("Insufficient balance!")
    
  2. init :__init__La méthode est appelée lorsqu'une nouvelle instance de la classe est créée et est utilisée pour initialiser l'état de l'instance. Par exemple, si vous écrivez une classe qui représente un rectangle, vous devrez peut-être__init__recevoir la largeur et la hauteur en tant que paramètres dans une méthode et les stocker en tant que propriétés de l'instance.

    class Rectangle:
        def __init__(self, width, height):
            self.width = width
            self.height = height
    
        def area(self):
            return self.width * self.height
    
  3. str :__str__la méthode est utilisée pour définir une représentation sous forme de chaîne d'une instance, ce qui est utile lors de l'impression d'une instance ou de la conversion d'une instance en chaîne. Par exemple, si vous écrivez une classe qui représente une date, vous devrez peut-être__str__renvoyer une chaîne de date formatée dans une méthode.

    class Date:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        def __str__(self):
            return f"{
            
            self.year}-{
            
            self.month:02d}-{
            
            self.day:02d}"
    

Ce ne sont là que quelques scénarios d'utilisation de base de self, __init__et . En fait, vous pouvez les utiliser en fonction de vos besoins spécifiques.__str__

épilogue

La compréhension est une étape importante vers le niveau suivant dans notre parcours d'apprentissage de la programmation. Cependant, maîtriser de nouvelles compétences et idées demande toujours du temps et de la persévérance. D'un point de vue psychologique, l'apprentissage s'accompagne souvent d'essais et d'erreurs continus et d'ajustements, c'est comme si notre cerveau optimisait progressivement son « algorithme » pour résoudre les problèmes.

C'est pourquoi, lorsque nous rencontrons des erreurs, nous devons les voir comme des opportunités d'apprendre et de nous améliorer, pas seulement comme des obsessions. En comprenant et en résolvant ces problèmes, nous pouvons non seulement corriger le code actuel, mais aussi améliorer notre capacité de programmation et éviter que les mêmes erreurs ne se reproduisent dans de futurs projets.

J'encourage tout le monde à participer activement et à améliorer continuellement leurs compétences en programmation. Que vous soyez un débutant ou un développeur expérimenté, j'espère que mon blog pourra vous aider dans votre parcours d'apprentissage. Si vous trouvez cet article utile, vous pouvez cliquer pour le mettre en signet, ou laisser vos commentaires pour partager vos idées et vos expériences.Vous êtes également invités à faire des suggestions et des questions sur le contenu de mon blog. Chaque like, commentaire, partage et suivi est le plus grand soutien pour moi et la motivation pour moi de continuer à partager et à créer.


Lisez ma page d'accueil CSDN pour débloquer du contenu plus intéressant : page d'accueil CSDN de Bubble
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_21438461/article/details/131368992
conseillé
Classement