Переменные состояния в Python: когда выбирать классы, нелокальные переменные или атрибуты функций

Существует (как минимум) три различных способа отслеживания информации о состоянии для функций в 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 классы кажутся наиболее элегантной техникой, поскольку она устраняет необходимость вложения определений функций. Однако, в то же время, классы могут вносить больше сложности, чем необходимо.

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

0 ответов

Другие вопросы по тегам