OOP objekt erzeugen

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
tieuquay
User
Beiträge: 12
Registriert: Samstag 26. Juli 2008, 08:19

Montag 26. Januar 2009, 18:41

Wie kann ich ein Objekt von Klasse B in der Klasse A erzeugen und dieses Objekt bzw. seine methoden in der Klasse A verwenden??
DasIch
User
Beiträge: 2462
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 26. Januar 2009, 18:49

Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 26. Januar 2009, 18:53

Code: Alles auswählen

intanz = B()
inztanz.methode()
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Montag 26. Januar 2009, 18:56

..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...)
tieuquay
User
Beiträge: 12
Registriert: Samstag 26. Juli 2008, 08:19

Montag 26. Januar 2009, 19:10

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 26. Januar 2009, 19:17

Weil nicht jedes Objekt unbedingt einen eigenen Konstruktor braucht, meist reicht der aus der Elternklasse auch schon.
DasIch
User
Beiträge: 2462
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 26. Januar 2009, 19:20

__init__ muss nicht definiert werden und ist auch nicht wirklich ein Konstruktor.
tieuquay
User
Beiträge: 12
Registriert: Samstag 26. Juli 2008, 08:19

Montag 26. Januar 2009, 19:29

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..
Antworten