这两个中哪个更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
方法可能是静态的。
答案 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了解更多信息。