Ich verstehe, dass in Python, wann immer Sie auf eine Klasse/Instanz-Variable zugreifen, ruft __getattribute__
Methode, um das Ergebnis zu erhalten. Jedoch kann ich auch obj.__dict__['x']
direkt verwenden und bekommen, was ich will.Unterschied zwischen __getattribute__ und obj .__ dict __ ['x'] in Python?
Ich bin ein wenig verwirrt über was ist der Unterschied? Auch wenn ich getattr(obj, name)
verwende, ruft es __getattribute__
oder obj.__dict__[name]
intern auf?
Vielen Dank im Voraus.
http://stackoverflow.com/questions/3278077/difference-between-getattr-vs-getattribute sollte Ihre Zweifel beseitigen. –
@AashishP danke für die kommentierung. Aber dieser Post erklärt den Unterschied zwischen "__getattr__" und "__getattribute__". Es scheint, dass "getattr" wenig mit "__getattr__" zu tun hat, also implizieren Sie, dass "getattr" tatsächlich gleich "obj .__ dict __ [name]" ist? – cizixs
Ja, richtig. Ich habe versucht, CPython Quellcode zu graben und hier ist, was ich gefunden habe, in Klartext, http://stackoverflow.com/questions/24863787/python-the-getattribute-method-and-descriptors –