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