Was ist der Unterschied zwischen dir () und __dir__ in Python?

8

in Python Was ist der Unterschied zwischen dir() Funktion und __dir__ Attribut in Python?

%Vor%     
alizx 31.10.2013, 09:59
quelle

4 Antworten

6

dir ruft __dir__ internall

auf %Vor%     
Ankur 31.10.2013, 10:02
quelle
5

Die Dokumentation erklärt es:

%Vor%     
ThinkChaos 31.10.2013 10:02
quelle
2

dir ruft __dir__ method auf, wenn es vorhanden ist, aus der Python-Dokumentation :

  

dir ([object]) ¶ Gibt ohne Argumente die Liste der Namen in der   aktueller lokaler Geltungsbereich Versuchen Sie mit einem Argument, eine Liste von   gültige Attribute für dieses Objekt.

     

Wenn das Objekt eine Methode namens __dir__() hat, wird diese Methode aufgerufen   und muss die Liste der Attribute zurückgeben. Dies ermöglicht Objekte, die   Implementieren Sie eine benutzerdefinierte Funktion __getattr__() oder __getattribute__() auf   Passen Sie die Art und Weise an, in der dir() ihre Attribute meldet.

     

Wenn das Objekt __dir__() nicht bereitstellt, versucht die Funktion ihr Bestes   um Informationen aus dem __dict__ -Attribut des Objekts zu erhalten, wenn   definiert und von seinem Typ Objekt. Die resultierende Liste ist nicht   ist notwendigerweise vollständig und kann ungenau sein, wenn das Objekt a hat   Benutzerdefiniert __getattr__() .

    
DhruvPathak 31.10.2013 10:03
quelle
0

Es lohnt sich, darauf hinzuweisen, dass die __dir__ für viele Objekte nicht angepasst werden kann. Wenn Sie sie also direkt aufrufen, gibt es keine Möglichkeit, einen Shim / Wrapper dorthin zu legen.

Es ist einfach, das eingebaute dir zu ersetzen und ihm bei Bedarf spezielle Kräfte zu geben. Tricks wie diese können beim Debuggen sehr nützlich sein.

    
John La Rooy 31.10.2013 10:31
quelle

Tags und Links