Funktion __slots__

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Hallo,

ich habe dazu leider nichts gefunden in der Dokumentation.

Normal wird doch dieser Aufruf

Code: Alles auswählen

a.var = 'test'
zu

Code: Alles auswählen

a.__dict__['var']  = 'test'
Aber wie wird es aufgelöst, wenn __slots__ verwendet wird? __slots__ ist ja kein Dictionary.

Viele Grüße

Sascha
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo sashs,

Dein Bild ist zu einfach. Ich krieg es grad nicht mehr ganz zusammen, wie Python wirklich mit settern umgeht,
aber bei slots wird ja gerade kein __dict__ generiert, sondern für jedes Attribut wird ein setter/getter generiert,
der direkt auf eine interne Tabelle zugreift.

Grüße
Sirius
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Vielen Dank für deine Antwort.

Genau das interessiert mich ja, beispielsweise welche interne Tabelle das ist. Wenn es vorher im __dict__ gespeichert war, wo wird jetzt nachgeschaut?

Viele Grüße

Sascha
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

sashs hat geschrieben:Genau das interessiert mich ja, beispielsweise welche interne Tabelle das ist. Wenn es vorher im __dict__ gespeichert war, wo wird jetzt nachgeschaut?
Das ist IMHO ein Implementierungsdetail der jeweiligen Python-Laufzeitumgebung.
BlackJack

@sashs: Wenn es hier keiner aus dem Kopf weiss, und verrät, dann könntest Du Dir den Quelltext herunterladen und selber danach suchen. Use the source… :-)
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

@/me
Vielen Dank.

@BlackJack
Das ist jetzt meine nächste Anlaufstelle. ;-)

Viele Grüße

Sascha
Antworten