Python: Warum ist __dict__ Attribut nicht in eingebauten Klasseninstanzen

Wenn mein Verständnis des Python-Datenmodells korrekt ist, haben beide Klassen und Klasseninstanzen __dict__ Objekte zugeordnet, die alle Attribute enthalten. Allerdings bin ich ein wenig verwirrt darüber, warum bestimmte Klasseninstanzen, wie zB Instanzen von str , kein __dict__ Attribut haben.

Wenn ich eine benutzerdefinierte Klasse schaffe:

 class Foo: def __init__(self): self.firstname = "John" self.lastname = "Smith" 

Dann kann ich die Instanzvariablen mit den Worten:

 >>> f = Foo() >>> print(f.__dict__) {'lastname': 'Smith', 'firstname': 'John'} 

Aber wenn ich versuche, das gleiche mit einer Instanz der eingebauten str zu tun, bekomme ich:

 >>> s = "abc" >>> print(s.__dict__) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'str' object has no attribute '__dict__' 

Also, warum nicht Instanzen von str haben ein __dict__ Attribut?

One Solution collect form web for “Python: Warum ist __dict__ Attribut nicht in eingebauten Klasseninstanzen”

Instanzen von in C definierten Typen haben standardmäßig kein __dict__-Attribut.

Python ist die beste Programmiersprache der Welt.