SEFC.py:
import time
import traceback
import platform
sefc_verbose = False
obj_sefc = None
class CSEFC():
def __init__(self):
self.fp_platform = False
self.bbu_platform = False
return
def __del__(self):
return
def ipmi_cmd_trace(self):
return False
KCS.py:
import SEFC as sefc
class CKCS(CLogger):
def __init__(self, str_ip = None, int_port = _DEFAULT_ATRAGON_PORT):
CLogger.__init__(self)
self.obj_json_client = None
def send_ipmi_target(self, targetstr, raw_request, int_retry = 3):
if sefc.obj_sefc.ipmi_cmd_trace():
##do stuff
我正在阅读其他人编写的代码。我似乎无法理解if sefc.obj_sefc.ipmi_cmd_trace():
obj_sefc
用来调用ipmi_cmd_trace()
函数。 sefc_obj
是我相信的全局变量。但是这段代码不适用。另外,我怀疑我的编程能力。这段代码似乎可以编译并为其他人工作。它是否正确?我在这里错过了什么吗?
答案 0 :(得分:0)
只需显示您已经显示的代码,您就行了,但由于obj_sefc
模块中None
为SEFC
,因此无法正常工作。但是,我怀疑您还没有显示的其他代码会创建CSEFC
类的实例并将其分配给该全局变量。然后,您显示的代码将起作用。
对于您已经证明依赖于其他一些代码的代码,它可能不是一个好的设计,因为如果它以错误的顺序运行它将会失败。但是,使用全局变量来包含类的单个实例通常不成问题。您只是想确保创建实例的代码放在某个位置,以确保在需要实例之前运行它。例如,代码可以放在SEFC
模块的底部,也可以放在KCS
模块的顶部。