1

请原谅,我是 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
4

1 回答 1

9

你确定它不会按照你已经使用的顺序工作吗?请记住,您没有使用 C。被调用的方法不必在调用代码之前出现在类定义中,只要它在被调用时已经定义。

但是,我会改变这一点:

_load_from_file(self)

对此:

self._load_from_file()

您遇到的任何 name-not-defined 错误不是因为您的方法调用位于比方法定义更早的文件位置,而是因为您尝试像全局函数一样调用它,而不是通过定义方法的对象来调用它。

于 2013-01-18T18:38:43.230 回答