Seite 1 von 1

OOP objekt erzeugen

Verfasst: Montag 26. Januar 2009, 18:41
von tieuquay
Wie kann ich ein Objekt von Klasse B in der Klasse A erzeugen und dieses Objekt bzw. seine methoden in der Klasse A verwenden??

Verfasst: Montag 26. Januar 2009, 18:49
von DasIch

Verfasst: Montag 26. Januar 2009, 18:53
von Leonidas

Code: Alles auswählen

intanz = B()
inztanz.methode()

Verfasst: Montag 26. Januar 2009, 18:56
von BlackVivi
..Das is'n bissel schwach, oder? Nicht.. irgendwie... das ich dich kritisieren möchte, oder so... Aber zumindest ein Stichwort oder so oO? Statt einem RTFM... ich fands immer toll, dass dieses Forum nicht ganz so schlimm ist =/

Deine Frage ist nicht ganz klar. Entweder du möchtest Vererbung benutzen:

Code: Alles auswählen

In [1]: class B(object):
   ...:     def foo(self):
   ...:         return 42
   ...:
   ...:

In [2]: class A(B):
   ...:     def bar(self):
   ...:         return 42*2
   ...:
   ...:

In [3]: a = A()

In [4]: a.foo()
Out[4]: 42

In [5]: a.bar()
Out[5]: 84
Oder du möchtest einfach nur eine Instanz von B in A verwenden:

Code: Alles auswählen

In [6]: class B(object):
   ...:     def foo(self):
   ...:         return 42
   ...:
   ...:

In [7]: class A(object):
   ...:     def __init__(self):
   ...:         self.b = B()
   ...:     def bar(self):
   ...:         return self.b.foo()
   ...:
   ...:

In [8]: a = A()

In [9]: a.bar()
Out[9]: 42
(Es wird dich garantiert stören, dass es Englisch ist.... aber du musst damit leider umgehen oder dich selbst nach einer deutschen Quelle umsuchen, hab ja Stichworte gegeben...)

Verfasst: Montag 26. Januar 2009, 19:10
von tieuquay
ah danke... ich will eine Instanz von B in A verwenden, aber das

Code: Alles auswählen

return self.b.foo()
funktioniert in meinem Programm iwie nicht, komisch.. oder ich habe irgendwo Fehler gemacht :? wieso steht der Kontruktor

Code: Alles auswählen

def __init__(self):
in der Klasse B nicht?

Verfasst: Montag 26. Januar 2009, 19:17
von Leonidas
Weil nicht jedes Objekt unbedingt einen eigenen Konstruktor braucht, meist reicht der aus der Elternklasse auch schon.

Verfasst: Montag 26. Januar 2009, 19:20
von DasIch
__init__ muss nicht definiert werden und ist auch nicht wirklich ein Konstruktor.

Verfasst: Montag 26. Januar 2009, 19:29
von tieuquay
oh .. vielen dank ich habe nun mein Fehler gefunden.. ich habe vergessen,dass ("self") nicht mehr im Klammern von

Code: Alles auswählen

return self.b.foo()
sein sollte. zu viel self hat mich verwirrt :oops: danke schön noch mal..