Je pense que control_points à mon sens est une faute de conception
Je n'arrive pas à comprendre l'intérêt de mettre x_origin et y_origin en tant que variable de classe
Et je ne vois pas le rapport entre ce code horrible et les variables gobales...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Bonjour. Une classe globale qui contient des attributs c'est exactement la même chose que des variables globales. Il faut à tout prix éviter l'un comme l'autre.
Ça peut toujours être utile pour compter le nombre d'instanciations. Il y a peut-être des cas où les variables globales sont moins horribles que certains codes pour les éviter.
Par exemple si je dois trainer plusieurs variables dans une fonction récursive.
- Edité par PierrotLeFou 24 mars 2022 à 1:14:47
Le Tout est souvent plus grand que la somme de ses parties.
Et je ne vois pas le rapport entre ce code horrible et les variables gobales...
Horrible, horrible, comme tu y vas: -)
Et moi qui pensait peser mes mots
Déjà tu ne remplaces pas une variable globale. Variable globale a un module et variable de classe (globale à la classe) c'est tout à fait différent pour moi.
Ensuite dans ton code il serait plus propre de faire dans ta fonction,
class G:
def __init__(self):
self.toto: int = 0
def une_fonction(g: G):
g.toto = 10
my_g = G()
une_fonction(my_g)
print(my_g.toto)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Pour moi l'utilisation de global est plus un problème de conception qu'autre chose, les fonctions peuvent prendre en argument des valeurs et en retourner, il faut les utiliser abondamment, on retrouve souvent l'utilisation de global chez les débutants, car le code n'est pas pensé et ils se mettent à créer de la variable à la volée.
Effectivement l'utilisation de global n'est pas fameuse, c'est bien reconnu par tout le monde
" on retrouve souvent l'utilisation de global chez les débutants"
Cependant, je connais au moins un cas ou l'on ne peut les éviter, et le code est écrit par des professionnels, ca se passe dans un logiciel de CFAO édité par une compagnie allemande bien connue, les post processeurs (programme qui récupère les données d'usinage directement du logiciel et écrit le programme qui pilotera la machine à commande numérique dans l'atelier) sont écrits en langage TCL, et le seul moyen de récupérer les variables générées à la volée par la CFAO dans les procédures TCL est de les globaliser, mais c'est vraiment un cas particulier
Ca ressemble un peu à ça (j'ai volontairement modifié et francisé les noms):
C'est pas comme ça que j'aurai fais, j'ai adapté à ton exemple...
Phil_1857 a écrit:
Cependant, je connais au moins un cas ou l'on ne peut les éviter, et le code est écrit par des professionnels, ca se passe dans un logiciel de CFAO édité par une compagnie allemande bien connue, les post processeurs (programme qui récupère les données d'usinage directement du logiciel et écrit le programme qui pilotera la machine à commande numérique dans l'atelier) sont écrits en langage TCL, et le seul moyen de récupérer les variables générées à la volée par la CFAO dans les procédures TCL est de les globaliser, mais c'est vraiment un cas particulier
Je ne connais pas TCL, difficile de m'exprimer sur le sujet.
Pour des variables globales, souvent je préfère créer un module (constants.py) et l'importer pour y récupérer sa valeur.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
> Pour des variables globales, souvent je préfère créer un module (constants.py) et l'importer pour y récupérer sa valeur. Et tu n'appelles pas ça des variables globales? Le fait qu'elles soient un peu cachées ne les rend pas moins globales.
Le Tout est souvent plus grand que la somme de ses parties.
Le but est de ne pas être caché, au contraire... le but est de les rassembler !
Qu'appelles-tu variables globales ?
La manière que je présente est surtout prévu pour accéder à des constantes qui sont effectivement globales à un module.
La variable globale en ce qui me concerne est une variable qu'on définie en début de module et qu'on souhaite modifier dans des fonctions ou des classes d'un module.
C'est pas tout à fait ce que je propose... avec mon constants.py
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
En terme sémantique du coup pour répondre sur un cas applicatif quelles sont les conceptions que vous avez d'un "container" pour être générique dans l'appellation stockant des données d'un fichier de configuration qui pourraient être modifié par exemple à la volée. L'idée du "global" c'est bien dans tous les cas d'avoir quelque chose d'accessible dans toute l'application... Et la raison de ne pas vouloir de variables globales c'est pour éviter des problèmes divers, ça ne repose pas non plus sur une idée en l'air.
Après je suis d'accord pour dire qu'on peut limiter la portée, mais simplement en se reportant sur un tel exemple qui va revenir très souvent peut être même que c'est l'exemple type qui va revenir, ça permettra d'être moins abstrait.
Si on se base sur les principes la constante ne se modifie pas, la variable si, seulement un programme ne va pas forcément utiliser que des constantes à moins qu'il soit très limité. Dès lors qu'on entre dans une logique de sauvegarde des paramètres et modifications sans réinitialisation, le développeur va être amené à s'interroger et c'est là où c'est intéressant de définir les bonnes pratiques.
Pas quelque chose du genre? >>> from math import * >>> pi 3.141592653589793 >>> pi=4 >>> pi 4
Oui et non, le but de mettre cela dans un module constants, c'est de charger au démarrage d'un projet et ne pas en modifier son contenu, mais ça reste un choix du développeur. Un peu comme le module settings.py connu du framework Django par exemple.
La variable globale c'est essayer de,
PI = 3.14
def change_pi():
# modifier la valeur de PI
faire cela par exemple.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Utiliser des variables globales ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
typage structurel ftw
Le Tout est souvent plus grand que la somme de ses parties.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Le Tout est souvent plus grand que la somme de ses parties.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Le Tout est souvent plus grand que la somme de ses parties.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)