Funktion einer Klasse in einer anderen Klasse anwenden

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
Nmles
User
Beiträge: 2
Registriert: Dienstag 10. Januar 2023, 11:20

Ich möchte eine Funktion func1 aus einer Klasse class1 in einer anderen Klasse class2 aufrufen. Wie mach ich dies, bzw. was für ein Import o.Ä. ist notwendig?

Außerdem würde ich diese Funktion func1 gerna als Attribut einer Funktion func2 der Klasse 2 aufrufen lassen.

vielen Dank für die Hilfe im vorraus!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

class A:
    def method(self):
        print("method in A")

class B:
    def __init__(self, an_a):
        self._a = an_a
    def test(self):
        self._a.method()

def main():
    a = A()
    b = B(a)
    b.test()

if __name__ == "__main__":
    main()
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@Nmles: Als Hinweis, weil es ein bisschen danach klingt: Klassen sind keine Container für Funktionen. Sie repräsentieren Objekte. Als Regel gilt in etwa: Wenn eine Methode keinen Bezug zu seinem Objekt hat (gut daran zu erkennen, dass "self" nicht oder nicht sinnvoll verwendet wird) dann ist sie besser eine Funktion außerhalb einer Klasse.
Nmles
User
Beiträge: 2
Registriert: Dienstag 10. Januar 2023, 11:20

__deets__ hat geschrieben: Dienstag 10. Januar 2023, 12:01

Code: Alles auswählen

class A:
    def method(self):
        print("method in A")

class B:
    def __init__(self, an_a):
        self._a = an_a
    def test(self):
        self._a.method()

def main():
    a = A()
    b = B(a)
    b.test()

if __name__ == "__main__":
    main()
Danke! Und wie mach ich dass, wenn die zwei Klassen eigene Datein sind ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem du sie wie jeden Namen importierst.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Das spielt doch gar keine Rolle, wo die Klasse definiert ist, man importiert einfach die Klasse dort, wo man sie braucht.
Zeige am besten Deinen eigenen Code, dann kann man da besser helfen.
Antworten