цикл в функции __init__? - PullRequest
       11

цикл в функции __init__?

0 голосов
/ 06 февраля 2019

Мне интересно, нормально ли в перспективе стиля включать цикл for в __init__ функцию класса.

Учитывая список целых чисел, я пытаюсь сгенерировать another_list, в котором хранятся различия в токезначение и следующее значение.Однако я хотел бы использовать another_list для более чем одного метода в классе.Поэтому я думал о создании another_list в функции __init__, а не о преобразовании его для каждого метода.Это самый простой способ?что такое обычный стиль?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Ну, это не плохая практика - использовать цикл, но я реорганизую цикл в другой функции, чтобы сохранить порядок

class A:
    def __init__(self, some_list):
        self.this_list = some_list
        self.create_another_list()

    def create_another_list(self):
        self.another_list = self.this_list[::-1]

    def print_another_list(self):
        return self.another_list

A([1,2,3]).print_another_list()

Вы также можете создать цикл в __init__

class A:
    def __init__(self, some_list):
        self.this_list = some_list
        self.another_list = self.this_list[::-1]

    def print_another_list(self):
        return self.another_list
A([1,2,3]).print_another_list()

Дизайн мудрый и правильный

0 голосов
/ 06 февраля 2019

Нет ограничений на то, что вы должны или должны написать в __init__.Петли ничем не отличаются.Если вы считаете, что вам нужно вычислить атрибут экземпляра с помощью цикла - переходите к нему.

Все, что является частью состояния объекта [логически], должно быть сохранено как атрибут, нет причин для его повторного вычисления, если оно не - динамический аргумент для других методов.Это основная идея ООП, за которой следует python.

...