114 votes

Déclaration de variables Python

Apprendre Python et a quelques doutes de base.

1. J'ai vu déclaration de variable (chemin ici) comme

class writer:
    path = ""

parfois, pas de déclaration explicite mais initialisation par __init__ .

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

Je comprends l'objectif de __init__ mais est-il conseillé de déclarer une variable dans d'autres fonctions ?

Comment puis-je créer une variable pour contenir un type personnalisé ?

class writer:
    path = "" # string value
    customObj = ??

0voto

Miguel Silva Points 162

À partir de Python 3, vous pouvez déclarer explicitement les variables par type.

Par exemple, pour déclarer un nombre entier, on peut procéder comme suit :

x: int = 3

ou :

def f(x: int):
    return x

voir cette question pour des informations plus détaillées à ce sujet : Déclaration explicite d'un type de variable en Python

-1voto

jpaugh Points 1543

Python n'a pas vraiment de syntaxe spéciale pour la déclaration des variables : vous devez simplement prendre soin d'attribuer une valeur à chaque variable avant de l'utiliser. (Il existe un élément appelé global mais je ne l'ai jamais utilisé). Venant de certains autres langages de programmation, j'ai toujours pensé que c'était un inconvénient.

Dans les classes Python, cependant, ce problème (lire fonctionnalité ) est amplifié : vous ne pouvez pas déclarer une variable dans une définition de classe sans lui attribuer une valeur, donc une telle attribution est généralement retardée jusqu'à ce que nous ayons une valeur à lui attribuer, comme dans __init__()

Ejemplo: Mauvais

class MyClass(object):
    new_thing

    def __init__(self, the_new_thing):
        self.new_thing = the_new_thing

Cela échoue ! new_thing ne peut pas simplement "traîner" sur la deuxième ligne. Il faut lui attribuer une valeur, car il n'y a pas de syntaxe (en Python) pour les déclarations.

Ejemplo: Droit

class MyClass(object):
    def __init__(self, the_new_thing):
        self.new_thing = the_new_thing

Nous voyons donc que new_thing n'est jamais déclarée explicitement, mais elle obtient une valeur lorsqu'un fichier MyClass est créé. Confusion !

Ejemplo: Meilleur

class MyClass(object):
    new_thing = None

    def __init__(self, the_new_thing):
        self.new_thing = the_new_thing

C'est beaucoup moins compliqué à lire ou à maintenir, mais il faut donner à new_thing une valeur explicite car la déclaration en soi est impossible.

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