dir()

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hi,
Was gibt eingentlich dir aus?
Ist es so wie len(o) eigentlich nur o.__len__ oder steht da mehr dahinter?
Wenn nein, könnte man nicht die Variable dahingehen beeinflussen. dass beim import nur bestimmte Bereiche exportiert werden?
TUFKAB – the user formerly known as blackbird
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

siehe Docs.

Dir gibt also alle Methoden eines Moduls aus (bei dir(modul)) und ggf. noch builtin-Methoden, auf die das Modul zugreifen kann.
Nach dem Import eines Moduls kannst Du kein modul.__dir__() machen - es sei denn natürlich irgendjemand hat eine solche Methode für sein Modul definiert. Aber es ist jedenfalls nicht builtin.
Wenn nein, könnte man nicht die Variable dahingehen beeinflussen. dass beim import nur bestimmte Bereiche exportiert werden?
Was meinst Du damit?

Gruß,
Christian
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Ohne Argument liefert er Dir eine Liste der aktuellen Namen des lokalen Namensraumes.

Wenn ein Objekt angegeben wird, liefert er Dir dann eine Liste aller Attribute und Methoden des Objekts.

Im interaktiven Modus (Idle) kann man sich damit einen Überblick über die Funktionen verschaffen, die ein Modul bereit stellt.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich weiß jawohl, was dir() macht.
ich dachte nur, dass ein import gtk einfach alle methoden in einen Namensraum läd, die in einer bestimmten Liste sind (der Liste, die dir ausgibt).
Ich dachte, ob man diese Variable beinflussen könnte, dass ein import bestimmte bereiche übergeht, sowas wie private.
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:Im interaktiven Modus (Idle) kann man sich damit einen Überblick über die Funktionen verschaffen, die ein Modul bereit stellt.
Den interaktiven Modus gibt es übrigens nicht in IDLE sondern in Python selbst, mit anderen Worten, dazu brauchst du kein IDLE. Oder du besorgst die IPython, dann hast du einen richtig tollen Interaktiven Modus mit vielen Features.
blackbird hat geschrieben:Ich weiß jawohl, was dir() macht.
ich dachte nur, dass ein import gtk einfach alle methoden in einen Namensraum läd, die in einer bestimmten Liste sind (der Liste, die dir ausgibt).
Ich dachte, ob man diese Variable beinflussen könnte, dass ein import bestimmte bereiche übergeht, sowas wie private.
Hmm, ich denke dir() liest einfach die globals eines Moduls aus. Bei einem import wird afaik dir() nicht benutzt, Python geht beim Importieren die Datei durch erstellt daraus die Modul-globals und ist fertig. Mit dir() werden halt einfach die Namen der globals ausgegeben, also hat dir() nur informative Funktion und wird nicht intern von Python verwendet.

Aber warum willst du denn etwas unbedingt private machen? Dazu reicht es meist einen Namen mit einem oder zwei _ zu markieren, wenn die Programmierer das trotzdem nutzen sind sie selbst schuld wenn irgendwann etwas nicht mehr geht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten