Проверка существования члена в Python

Я регулярно хочу проверить, есть ли у объекта член или нет. Примером является создание синглтона в функции. Для этого вы можете использоватьhasattr как это:

class Foo(object):
    @classmethod
    def singleton(self):
        if not hasattr(self, 'instance'):
            self.instance = Foo()
        return self.instance

Но вы также можете сделать это:

class Foo(object):
    @classmethod
    def singleton(self):
        try:
            return self.instance
        except AttributeError:
            self.instance = Foo()
            return self.instance

Один метод лучше другого?

Редактировать: Добавил@classmethod ... но учтите, что вопросне о том, как сделать синглтон, но как проверить наличие члена в объекте.

Редактировать: Для этого примера типичное использование будет:

s = Foo.singleton()

затемs является объектом типаFoo, то же самое каждый раз. И, как правило, метод вызывается много раз.

Ответы на вопрос(5)

Ваш ответ на вопрос