2010-09-06 3 views

Répondre

2

Vous pouvez définir des attributs sur n'importe quelle classe avec __dict__, car c'est là qu'ils sont stockés. object instances (qui sont bizarres) et une classe qui définit __slots__ ne l'avez pas:

>>> class Foo(object): pass 
... 
>>> foo = Foo() 
>>> hasattr(foo, "__dict__") 
True 
>>> foo.bar = "baz" 
>>> 
>>> class Spam(object): 
...  __slots__ = tuple() 
... 
>>> spam = Spam() 
>>> hasattr(spam, "__dict__") 
False 
>>> spam.ham = "eggs" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'Spam' object has no attribute 'ham' 
>>> 
+0

-à-dire, une classe définie par l'utilisateur fera – pberkes

+1

@pberkes: Nope, vous pouvez faire des classes sans '__dict__' (habituellement Utilisé pour l'efficacité de la mémoire si vous attendez _lots_ d'instances – katrielalex

+0

@katrielatex: Je vois ... c'est bon à savoir! – pberkes

Questions connexes