Se la mia comprensione del modello di dati Python è corretta, entrambe le istanze di classi e classi hanno associato gli oggetti __dict__
che contengono tutti gli attributi. Tuttavia, sono un po 'confuso sul motivo per cui alcune istanze di classe, come ad esempio le istanze di str
, non hanno un attributo __dict__
.Python: perché l'attributo __dict__ non è presente nelle istanze di classe integrate
Se creo una classe personalizzata:
class Foo:
def __init__(self):
self.firstname = "John"
self.lastname = "Smith"
Poi posso ottenere le variabili di istanza dicendo:
>>> f = Foo()
>>> print(f.__dict__)
{'lastname': 'Smith', 'firstname': 'John'}
Ma se provo a fare lo stesso con un'istanza del incorporato in str
, ottengo:
>>> s = "abc"
>>> print(s.__dict__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute '__dict__'
Quindi, perché non le istanze di str
hanno un 0 Attributo?
di elaborare su questo, se ogni dict aveva un '__dict__', allora non ci sarebbe deve essere anche '__dict __.__ dict__' - quanto dovrebbe essere profonda la ricorsione? –