Интересно, есть ли разумный простой способ заставить этот код (с небольшими изменениями) работать.
class Info(object):
@attr("Version")
def version(self):
return 3
info = Info()
assert info.version == 3
assert info["Version"] == 3
В идеале код также должен выполнять кэширование/запоминание, например. использовать ленивые атрибуты, но я надеюсь понять это сам.
Дополнительная информация:
Причина, по которой я хочу предоставить два интерфейса для доступа к одной и той же информации, заключается в следующем.
Я хотел бы иметь класс, похожий на диктофон, который использует ленивые ключи. Например. info["Version"]
должен вызывать и кэшировать другой метод и прозрачно возвращать результат. Я не думаю, что это работает только с диктовками, поэтому мне нужно создать новые методы. Методы сами по себе тоже не помогут, потому что есть некоторые атрибуты, которые легче определить с помощью чистого синтаксиса словаря.
В любом случае, это, наверное, не лучшая идея…
version
)? - person unutbu   schedule 20.07.2010