Seite 1 von 1

Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 11:27
von Nmles
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!

Re: Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 12:01
von __deets__

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()

Re: Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 12:25
von sparrow
@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.

Re: Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 14:04
von Nmles
__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 ?

Re: Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 14:11
von __deets__
Indem du sie wie jeden Namen importierst.

Re: Funktion einer Klasse in einer anderen Klasse anwenden

Verfasst: Dienstag 10. Januar 2023, 14:14
von Sirius3
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.