питонический способ инициализации переменных экземпляра - PullRequest
0 голосов
/ 01 октября 2018

Какие из этих двух более питонны?

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 голосов
/ 01 октября 2018

Хороший способ инициализации класса:

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']

В моем примере выше приведен объект конфигурации, в котором вы можете получить значения, сохраненные из файла.

PS Я не проверял код выше.Взгляните на configparser docs для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...