【发布时间】:2011-04-23 01:01:20
【问题描述】:
在 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 内置函数之一,以便可以在任何地方调用它?或者有没有更好的方法来做我想要在这里完成的事情?
【问题讨论】:
-
检查您收到的错误消息。应该没有理由不能从类初始化程序调用 notify(),但未声明类名 FTP。
-
你的 notify 调用
sys.exit(),因此 main 中对 zoneFTP() 的调用将永远无法到达。 -
@Steve 正确,上面的代码是从我正在处理的一个更大的项目中挑选出来的,我错过了那部分。我修复了代码示例。
-
@Keith 谢谢,我是 python 新手,完全忘记了我在那里。它现在工作得很好!
-
哈哈,在随机函数中抛出 sys.exit 通常是个坏主意!
标签: python global-variables global