créer une fonction globale en python
En python comment puis-je créer une fonction qui peut être globale utilisée dans toutes les classes qui sont appelés?
Voici un exemple:
import configparser
import os
import sys
from datetime import datetime
from ftplib import FTP
def notify(msg):
echo = True
log = True
if echo:
print(msg)
if log:
f = open('log.txt','a')
msg = datetime.now().strftime("%y-%m-%d-%H:%M:%S")+': ' + msg
f.write(msg)
f.close()
#sys.exit() #removing this was the fix!
class zoneFTP():
def __init__(self):
self.conn = FTP()
self.dir = './'
notify('The dir is :' + self.dir)
def main():
notify('starting')
ftp = zoneFTP()
if __name__ == "__main__":
main()
Appel notify()
dans le zoneFTP classe échoue. Comment puis-je faire la notify()
fonctionner comme un seul de l'python construit dans les fonctions de sorte qu'il peut être appelé n'importe où? Ou est-il une meilleure manière de faire ce que je suis en train de faire ici?
Vérifiez le message d'erreur que vous obtenez. Il devrait y avoir aucune raison que vous ne pouvez pas appeler notify() de la classe d'initialiseur, mais le nom de la classe FTP n'est pas déclaré.
Votre notifier les appels
Correct, Le code ci-dessus est sélectionné à partir d'un grand projet sur lequel je travail, j'ai raté la partie. J'ai corrigé le code d'exemple.
Merci, je suis nouveau sur python et totalement oublié que j'avais ce qu'il y à. Il fonctionne très bien maintenant!
haha, jetant sys.de sortie dans les fonctions aléatoires est généralement une mauvaise idée!
Votre notifier les appels
sys.exit()
, de sorte que le l'appel à zoneFTP() dans main il ne sera jamais atteint.Correct, Le code ci-dessus est sélectionné à partir d'un grand projet sur lequel je travail, j'ai raté la partie. J'ai corrigé le code d'exemple.
Merci, je suis nouveau sur python et totalement oublié que j'avais ce qu'il y à. Il fonctionne très bien maintenant!
haha, jetant sys.de sortie dans les fonctions aléatoires est généralement une mauvaise idée!
OriginalL'auteur lanrat | 2011-04-23
Vous devez vous connecter pour publier un commentaire.
Mettre
notify()
dans un module d'utilitaire et de tous les autres modules d'importation.OriginalL'auteur Ignacio Vazquez-Abrams