gibt es eine möglichkeit die "attribute" eines moduls A nicht zugänglich zu machen für andere module, die A importieren?
für klassen ist das ja kein thema, aber bei modulen bin ich ratlos.
könnte so was nämlich gut gebrauchen.
vielen dank
![Very Happy :D](./images/smilies/icon_biggrin.gif)
elch
Davon habe ich schon mal gelesen.Leonidas hat geschrieben:...
Wusste ich noch gar nicht, aber man sollte *-Imports sowieso nicht machen.
Code: Alles auswählen
>>> dir()
['__builtins__', '__doc__', '__name__']
>>> len(dir())
3
>>> from Tkinter import *
>>> len(dir())
177
>>> from qt import *
>>> len(dir())
476
>>> from gtk import *
>>> len(dir())
1410
Naja, wobei es jetzt vielleicht weniger warscheinlich ist, das ein Programm gleichzeitig drei GUIs nutzt.. mir reicht meist GTK völligErwin hat geschrieben:1410?
Wahnsinn.
Ja, du kannst folgendes machen:Erwin hat geschrieben:Also am besten alles extra importieren?
Dann bekommt man eigentlich auch automatisch mit, wenn etwas doppelt vorhanden ist, also Namentlich?
Code: Alles auswählen
import Image
from Tkinter import Image
Code: Alles auswählen
import Tkinter as tk
import Image
Code: Alles auswählen
import qt
Code: Alles auswählen
import qtwrap as qt
app = qt.Application([])
import this hat geschrieben:Namespaces are one honking great idea -- let's do more of those!
Ich mache es so wie hier beschrieben, damit habe ich praktisch nie Probleme.Erwin hat geschrieben:Das kann teilweise heiter werden.
Schade daß sich einiges Namentlich gegenseitig überschreibt.
Oje oje.Leonidas hat geschrieben:Aber Tkinter würde ich so importieren:damit kann ich auf sowohl auf PILs Image zugreifen als auch auf tk.Image.Code: Alles auswählen
import Tkinter as tk import Image
Damit kann man etwas importieren und an einen anderen Namen binden.Erwin hat geschrieben:Was hat es sich mit den 'as' auf sich?
Das erste importiert nur die Klasse `Tk` aus dem Modul `Tkinter` und das zweite importiert das Modul `Tkinter` und bindet es an den Namen `Tk`. Auf die Klasse greift man dann mit `Tk.Tk()` zu. Am besten probiert man solche Sachen im interaktiven Interpreter aus und schaut sich sozusagen "live" an, was passiert.Wo ist da der Unterschied zwischen
- from Tkinter import Tk
und
- import Tkinter as Tk
?
Code: Alles auswählen
# optionen.py
blah = 42
Code: Alles auswählen
# mod_a.py
from optionen import *
blah = 5
import mod_b
Code: Alles auswählen
# mod_b.py
import optionen
print optionen.blah
Ich habe das jetzt mal gecheckt:fs111 hat geschrieben:Wenn man from foo import * macht, werden die "_"-Sachen übrigens nicht mitimportiert, also schon in gewisser Weise private.
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
_val = True
__val = True
Code: Alles auswählen
>>> import privmod
>>> dir(privmod)
['__builtins__', '__doc__', '__file__', '__name__', '__val', '_val']
>>> privmod._val
True
>>> True
>>> privmod.__val
True
Hi Leonidas!Leonidas hat geschrieben: Nein, so wie ich sehe werden die Sachen doch importiert (Python 2.4.1).
Ohje, stimmt. Wie kommt es dass ich heute schon so früh so total fertig bin, dass ich so einen Schmarrn gemacht habe?gerold hat geschrieben:fs11 schrieb from foo import *. Das macht schon einen Unterschied![]()
Die kannst mit del <Modul> die Referenz löschen. Nützlich ist es.. nie, denn wenn du das Modul zwischendrin geändert hast, wird sowieso per import wieder die alte Version geladen. Deswegen gibt es um Module neu zu laden das Builtin reload().Olliminatore hat geschrieben:Wie kann man module/attribute wieder entladen und wann ist es nützlich? (finde es einfach nicht)