Iapws c'est International Association for Properties of Water and Steam qui fournit sous python une appli permettant d'avoir les propriétés de l'eau et vapeur à toute pression et température.C 'est une appli assez vaste qui consiste en plusieurs fichiers /scripts.Certaines fonctions sont facilement accessible à un programmeur débutant mais d'autres sont pas accessibles facilement.
Il s'agit de fonctions comprenant un double underscore(long) tel PSat_P qui quand on les appelle génèrent une erreur"stdin" no name defined.La je suis largué et je cherche de l'aide sur ce type de problème: comment appeler de telles fn?si quel qu'un à une idée ou une suggestion de formation à ce type de syntaxes python,je suis preneur.
# Où est le code source ?
Posté par François GUÉRIN (Mastodon) . Évalué à 3.
D'une façon générale, en python, les fonctions et méthodes qui commencent par un underscore le sont pour les marquer comme "privée", même si ce concept n'existe pas dans le langage.
"Nous sommes entre adultes consentants" IL S'AGIT DE CONVENTIONS
Les méthodes de la forme
__<name>__
sont des méthodes spéciales du langage, qui par exemple définissent le constructeur (__init__
) les opérateurs (__add__
)…Pour le cas particulier de la bibliothèque
iapws
, il faudrait voir le code source et la doc !J'ai un peu regarder le site, bah je n'ai pas trouvé grand chose d'exploitable !
Courage !
# exemple script iapws97
Posté par osenon (site web personnel) . Évalué à 1. Dernière modification le 11 novembre 2021 à 19:36.
voila un exemple de la fonction dans script iapws97 ( que l'on peut pas importer par la formulation simple import iapws97 * , ca marche pas ?) l'aPPLI IAPWS comprend un folder fait de plusieurs scripts donc un "cache " ……
voila extrait du script iapws97 con,tenat des fonctiosn non applables de facon simple ..
# Cas du double underscore en début des identifiants de méthodes de classes
Posté par lolop (site web personnel) . Évalué à 4.
On n'a pas tout le contexte, mais au cas où…
Dans le cas de méthodes définies dans une classe, le
__
(deux_
) fait que l'identifiant défini est préfixé par le nom de la classe.Définit en fait une méthode:
Truc._Truc__methode
. C'est un moyen de protection contre la redéfinition d'une méthode dans une sous-classe.Pour les fonctions, le
_
protège de l'import *
d'un module.Éventuellement, si tu passes par un
from iaws import *
, la méthode préfixée par_
ne sera pas importée. Il faut passer par son nom de module:Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Cas du double underscore en début des identifiants de méthodes de classes
Posté par lolop (site web personnel) . Évalué à 2.
Note: quand j'écris «Pour les fonctions», c'est pour tout nom défini au niveau global du module.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# J'ai trouvé le code !
Posté par François GUÉRIN (Mastodon) . Évalué à 3.
En fait, c'est assez simple…
C'est pas plus compliqué que ça :°)
Courage !
# merci pour tout ca marche
Posté par osenon (site web personnel) . Évalué à 1.
merci beaucoup , ça marche ; j'avais tout essayé avec import iapws97 * ou autres sans m'en sortir….
Faut dire que dans la doc il y avait un "from iapws import IAPWS97" - tel que en majuscule - qui ne donne accès qu'à certaines fonctions .J'ai pas compris les raisons de tout ceci mais bon cela fonctionne ..
Mieux vaut 1 qui sait que 100 qui cherchent.
Bonne journée et bon code…..
A tous ceux qui s’intéressent à la technique ( thermique ) je leur conseille de regarder cet appli iapws python ; perso je connais IAPWS depuis des lustres mais avant c’était sous excel , çà marchait aussi , mais bon les macros excel ,il faut chaque fois les recharger quand on on re-isntalle un OS (et je suis à mon 30eme linux de testé ).. En ce moment je suis MX 21 , et Arch .
Sujet donc clos.
[^] # Re: merci pour tout ca marche
Posté par François GUÉRIN (Mastodon) . Évalué à 1. Dernière modification le 13 novembre 2021 à 14:18.
Super que çà marche !
La bonne méthode serait plutôt d'utiliser un virtualenv si tu veux construire une application dessus.
Avec Jupyper, tu peux utiliser les fonctions directement dans un navigateur.
Tu pourras alors accéder au namespace iapws (dans la page jupyter):
L'avantage, c'est que tu peux enregistrer le notebook, pour le ré-ouvrir plus tard…
Tu peux évidemment construire ne app aussi !
Courage !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.