150 votes

Pourquoi utilisons-nous __init__ dans les classes Python ?

J'ai du mal à comprendre l'initialisation des classes.

Quel en est l'intérêt et comment savoir ce qu'il faut y inclure ? L'écriture dans des classes nécessite-t-elle un autre type de réflexion que la création de fonctions (je me suis dit que je pouvais simplement créer des fonctions et les envelopper dans une classe pour pouvoir les réutiliser. Cela fonctionnera-t-il ?)

Voici un exemple :

class crawler:
  # Initialize the crawler with the name of database
  def __init__(self,dbname):
    self.con=sqlite.connect(dbname)

  def __del__(self):
    self.con.close()

  def dbcommit(self):
    self.con.commit()

Ou un autre exemple de code :

class bicluster:
  def __init__(self,vec,left=None,right=None,distance=0.0,id=None):
    self.left=left
    self.right=right
    self.vec=vec
    self.id=id
    self.distance=distance

Il y a tellement de classes avec __init__ Je les rencontre en essayant de lire le code d'autres personnes, mais je ne comprends pas la logique de leur création.

3voto

Al G Points 4546

Le site __init__ configure toutes les variables membres de la classe. Ainsi, une fois que votre bicluster est créé, vous pouvez accéder à la variable membre et obtenir une valeur en retour :

mycluster = bicluster(...actual values go here...)
mycluster.left # returns the value passed in as 'left'

Consultez le Docs Python pour plus d'informations. Vous voudrez bien vous procurer un livre sur les concepts OO pour continuer à apprendre.

3voto

joaquin Points 22450

Les classes sont des objets dotés d'attributs (état, caractéristique) et de méthodes (fonctions, capacités) qui sont spécifiques à cet objet (comme la couleur blanche et les pouvoirs de vol, respectivement, pour un canard).

Lorsque vous créez une instance d'une classe, vous pouvez lui donner une personnalité initiale (état ou caractère comme le nom et la couleur de sa robe pour un nouveau-né). Vous faites cela avec __init__ .

En gros, __init__ définit les caractéristiques de l'instance automatiquement lorsque vous appelez instance = MyClass(some_individual_traits) .

3voto

vedavyasa Points 41
class Dog(object):

    # Class Object Attribute
    species = 'mammal'

    def __init__(self,breed,name):
        self.breed = breed
        self.name = name

Dans l'exemple ci-dessus, nous utilisons l'espèce comme un élément global puisqu'elle sera toujours la même (une sorte de constante, pourrait-on dire). __init__ alors toutes les variables de la méthode __init__ sera lancé (ex : race, nom).

class Dog(object):
    a = '12'

    def __init__(self,breed,name,a):
        self.breed = breed
        self.name = name
        self.a= a

si vous imprimez l'exemple ci-dessus en appelant ci-dessous comme ceci

Dog.a
12

Dog('Lab','Sam','10')
Dog.a
10

Cela signifie qu'il ne sera initialisé que lors de la création de l'objet. Ainsi, tout ce que vous voulez déclarer comme constant doit être considéré comme global et tout ce qui change doit être utilisé. __init__

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X