Je souhaite régulièrement vérifier si un objet a un membre ou non. Un exemple est la création d'un singleton dans une fonction. A cet effet, vous pouvez utiliser hasattr
comme ceci:Vérification de l'existence d'un membre en Python
class Foo(object):
@classmethod
def singleton(self):
if not hasattr(self, 'instance'):
self.instance = Foo()
return self.instance
Mais vous pouvez aussi le faire:
class Foo(object):
@classmethod
def singleton(self):
try:
return self.instance
except AttributeError:
self.instance = Foo()
return self.instance
est une méthode meilleure de l'autre?
Edit: Ajouté le @classmethod
... Mais notez que la question est pas sur la façon de faire un singleton, mais comment vérifier la présence d'un membre dans un objet.
Edit: Pour cet exemple, une utilisation typique serait:
s = Foo.singleton()
Alors s
est un objet de type Foo
, le même à chaque fois. Et, typiquement, la méthode est appelée plusieurs fois.
Pouvez-vous donner un exemple d'appel que vous essayez d'effectuer et le rendement attendu de cet appel? – Baltimark