Seite 1 von 1
Module und Klassen
Verfasst: Dienstag 26. Oktober 2004, 08:25
von pSy
Hallo mal wieder...
Ich würde gern in meinem Hauptscript den Modulen Klassen und Funktionen anbieten. Also ist die eigentliche Frage: Wie kann ein Modul auf Funktionen, Klassen oder Variablen seines MainScriptes zugreifen?
Danke im Vorraus
pSy
Verfasst: Dienstag 26. Oktober 2004, 10:18
von mawe
Hi!
Du könntest z.B. dem (wie Du sagst) Modul sagen, wer es aufgerufen hat:
Code: Alles auswählen
# Datei: A.py
from B import B
class A:
def __init__(self):
b = B(self)
def say_hello(self):
print "hello from A"
A()
Code: Alles auswählen
# Datei: B.py
class B:
def __init__(self, master):
self.master = master
self.master.say_hello()
Gruß, mawe
Verfasst: Dienstag 26. Oktober 2004, 10:56
von Gast
danke für den tipp... da hab ich glatt noch eine kleine frage.
man kann doch mit
bestimmte funktionen eines modules direkt importieren.
kann man die auch umbenennen um doppelte bezeichnungen zu vermeiden,
so wie
, oder muss man dann den normalen weg gehen:
?
Verfasst: Dienstag 26. Oktober 2004, 11:12
von mawe
Hi!
Probiers doch einfach aus!
Code: Alles auswählen
# Datei: A.py
from B import B as C
class A:
def __init__(self):
b = C(self)
....
Sollte funktionieren. Wird recht häufig gemacht, um lange Namen abzukürzen. Man sieht sehr oft
Gruß, mawe
Verfasst: Dienstag 26. Oktober 2004, 13:07
von pSy
und wie überprüfe ich ob der zurückgegebene wert wirklich ne instanz ist?
denn type gibt zwar <type 'instance'> zurück, aber der begriff instance ist nicht festgelegt, wie zB str, int, dict oder list.
gibts da möglichkeiten typen zuzuweisen?
das einzigste was bisher klappt ist
was aber irgendwie blöd ist, da ich erst ne klasse brauche um so ein objekt zu bekommen.
Verfasst: Dienstag 26. Oktober 2004, 13:57
von Milan
Hi, dafür gibt es das Modul types:
Code: Alles auswählen
import types
class A:
pass
print types.InstanceType == type(A())
Verfasst: Dienstag 26. Oktober 2004, 14:06
von pSy
ah, wunderbar... jetzt haben sich erstmal die meisten fragen geklärt.
danke für die hilfe...
Verfasst: Dienstag 26. Oktober 2004, 14:41
von Dookie
Hi pSy,
Typeüberprüfungen kannst Du auch mit der eingebauten Funktion
isinstance(obj, class-or-type-or-tuple) machen.
Code: Alles auswählen
class A(object):
pass
a = A()
print "isinstance(a, A) -> %s" % str(isinstance(a, A))
print "isinstance(a, tuple) -> %s" % str(isinstance(a, tuple))
print "isinstance(a, object) -> %s" % str(isinstance(a, object))
isinstance prüft ob das objekt vom angegebenen Typ ist oder die Klasse des Objekts vom angegebenen Typ abgeleitet wurde. Es kann auch ein Tuple mit mehreren Typen/Classen übergeben werden z.B.
isinstance(a, (A, B, C))
Gruß
Dookie