初始化实例变量的pythonic方法

时间:2018-10-01 12:09:55

标签: python initialization

这两个中哪个更pythonic?

class A:
    def __init__(self):
        self.v1 = None
        self.v2 = None
        self.v3 = None
        self.foo()

    def foo(self):
        self.v1, self.v2, self.v3 = ...

或:

class A:
    def __init__(self):
        self.v1, self.v2, self.v3 = self.foo()

    def foo(self):
        return ...

我自己得出的结论是,在第一个示例中,乍一看并不清楚self.foo()是做什么的,直到有人通读该方法本身为止。

但是第二个问题是它可能会发出警告:foo方法可能是静态的。

1 个答案:

答案 0 :(得分:0)

初始化类的一种好方法是:

class A:
    def __init__(self, arg1=None, arg2=None):
        self.arg1=arg1
        self.arg2=arg2

由于要使用文件初始化变量,因此可能要使用ConfigParser。 ConfigParser使您可以读取文件并轻松访问键值对。

from configparser import ConfigParser
config = ConfigParser()
config.read('example.conf')

class A:
    def __init__(self, config):
        self.arg1=config['arg1']
        self.arg2=config['arg2']

我上面的示例类接受一个config对象,您可以在其中获取从文件存储的值。

P.S。我没有测试上面的代码。看看the configparser docs了解更多信息。