2011-04-23 40 views
4

在python中如何創建一個函數,可以是所有被調用的類中使用的全局函數? 下面是一個例子:在python中創建一個全局函數

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() 

調用在zoneFTP類notify()失敗。我如何使notify()函數像內置函數中的一個python一樣,以便可以在任何地方調用它?還是有更好的方式來做我想在這裏完成的事情?

+1

檢查您收到的錯誤消息。應該沒有理由不能從類初始值設定項調用notify(),但類名FTP沒有聲明。 – 2011-04-23 01:04:17

+1

你的通知調用'sys.exit()',所以永遠不會調用main中的zoneFTP()。 – Keith 2011-04-23 01:13:44

+0

@Steve正確,上面的代碼是從我正在處理的一個更大的項目中挑選的,我錯過了這個部分。我修正了代碼示例。 – lanrat 2011-04-23 01:20:34

回答

5

notify()放在一個實用程序模塊中,並讓所有其他模塊將其導入。

+0

這是一個好主意,當我得到更多這樣的功能時,我可能會開始使用這種方法,刪除sys.exit()修復了這個問題。 – lanrat 2011-04-23 01:22:32

相關問題