Немногие знают об этой функции, но функции (и методы) Python могут иметь attributes.Атрибуты функции Python - использование и злоупотребления
>>> def foo(x):
... pass
...
>>> foo.score = 10
>>> dir(foo)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name', 'score']
>>> foo.score
10
>>> foo.score += 1
>>> foo.score
11
Каковы возможные применения и злоупотребления этой функцией в Python? Одно хорошее использование, о котором я знаю, это использование PLY использования docstring для связывания правила синтаксиса с помощью метода. Но как насчет пользовательских атрибутов? Есть ли веские причины для их использования?
Это очень удивительно? В общем, объекты Python поддерживают ad-hoc-атрибуты. Конечно, некоторые не делают, особенно со встроенным типом. Для меня те, кто не поддерживает это, похоже, являются исключениями, а не правилом. – allyourcode 2012-11-27 07:01:17
Одно приложение в Django: [Настроить список изменений admin] (https://docs.djangoproject.com/en/1.6/intro/tutorial02/#customize-the-admin-change-list) – 2013-11-15 13:27:22
Проверьте [PEP 232] (http://www.python.org/dev/peps/pep-0232/). – user140352 2009-07-17 18:36:46