Переменные состояния в Python: когда выбирать классы, нелокальные переменные или атрибуты функции - PullRequest
0 голосов
/ 23 мая 2018

Существуют (как минимум) три различных способа отслеживания информации о состоянии для функций в Python (очевидно, примеры представлены без какого-либо значимого способа использования информации о состоянии):

ООП Классы:

class foo:
    def __init__(self, start):
        self.state = start
    # whatever needs to be done with the state information

нелокальные переменные (Python 3):

def foo(start):
    state = start
    def bar():
        nonlocal state
        # whatever needs to be done with the state information
    return bar

или атрибуты функции:

def foo(start):
    def bar(bar.state):
        # whatever needs to be done with the state information
    bar.state = start
    return bar

Я понимаю, как работает каждый метод, но я не смог объяснитьВот почему (помимо знакомства) вы бы выбрали один метод вместо другого.После Zen of Python классы кажутся наиболее элегантной техникой, поскольку она устраняет необходимость вложения определений функций.Однако в то же время классы могут вносить больше сложности, чем необходимо.

Что следует учитывать при взвешивании, какой метод использовать в программе?

...