请原谅,我是Python的新手,并试图学习Pythonic方法。我正在设计一个基本上从许多不同来源(文件)初始化其状态的类。我已将此行为隔离到单个实例方法_load_from_file(file)
。它在__init__
中被多次调用,但我通常喜欢将我的构造函数保留在类定义的开头,并将内部帮助器方法保留在最后。
但是,如果我采用这种方法,_load_from_file
未定义__init__
我想使用它的地方。你是如何将pythonistas列出来的呢?
详细说明:
class Thing(object):
def __init__(self, file_path):
f = open('file_path')
_load_from_file(self,"someData",f) # ISSUES!
_load_from_file(self,"moreData",f) # WRONG!
f.close()
# Interface
# ...
# Internal - Where do you guys put this stuff?
def _load_from_file(self,thingToLoad,file):
# logic
答案 0 :(得分:9)
您确定它不会按照您已经使用的顺序运行吗?记住,你没有使用C.在调用代码之前,被调用的方法不必出现在类定义中,只要它被调用的时间定义。
但是,我会改变这个:_load_from_file(self)
到此:
self._load_from_file()
你得到的任何名称未定义的错误并不是因为你的方法调用早于方法定义的文件位置,而是因为你试图将它称为全局函数而不是通过方法的对象是定义。