Я хотел бы иметь одноэлементный класс в Python с Java, например, "static class attributes". Я прочитал несколько сообщений, существующих в синглтонах Python, и не могу найти решение, кроме простого модуля как singleton.Python singleton again/как использовать атрибуты класса?
Есть ли способ продлить этот код (PEP318), чтобы использовать его со «атрибутами статического класса», которые я могу получить от функций?
def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance
@singleton
class MyClass:
...
[Singleton? Нам не нужен ни один сингл stinkin: шаблон дизайна Borg (рецепт Python)] (http://code.activestate.com/recipes/66531/) :) –
Комментарий Re @ Paulo, убедитесь, что вы читаете комментарии о новые классы стиля на этой странице. –
Существует множество способов имитации этого эффекта в одном модуле - тривиально, просто создайте класс, а затем запустите фабрику, которая всегда возвращает один и тот же экземпляр (или просто сделайте экземплярную часть пространства имен модуля). Мы все соглашаемся с взрослыми здесь - не нужно хранить вещи в секрете. –