Unterschied Methode und Funktion?

4 Antworten

Naja, ist im Grunde gehüpft wie gesprungen. Wenn du ganz genau sein willst, würdest du wohl eine Funktion, die an eine Klasse gebunden ist, als Methode bezeichnen. Der Sprachgebrauch wäre dann in etwa:

Die Klasse Auto verfügt über die Methode beschleunigen()

Sinnvoll ist die Unterscheidung zwischen Funktionen und Methoden wohl am ehesten dann, wenn die jeweilige Sprache neben OOP auch andere Paradigmen unterstützt. Ich persönlich finde den generischen Funktionsbegriff in den meisten Fällen völlig in Ordnung.

mertkert  09.04.2020, 16:38

So strikt ist die Unterscheidung eh nicht immer zu machen. Es gibt Halb-OO-Sprachen wie Go oder Ada 83, und es gibt die lustigen friend-Funktionen von C++. Und Javascript ist noch so ein seltsamer Fall, in dem es gar keine Klassen im herkömmlichen Sinn gibt (auch wenn es mittlerweile ein class-Keyword gibt).

1

Da es dir den Themen zufolge um Python geht, ein Beispiel für Python:

class Cat(object):
    def __init__(self, name):
        self.species = 'cat'
        self.name = name

    def talk(self):  # <- eine Methode der Klasse Cat
        print('{} says meow.'.format(self.name))


class Dog(object):
    def __init__(self, name):
        self.species = 'dog'
        self.name = name

    def talk(self):  # <- eine Methode der Klasse Dog
        print('{} says woof.'.format(self.name))


def chase(cat, dog):  # <- eine Funktion: ausserhalb von Klassen definiert
    print('{} is chasing {}!'.format(dog.name, cat.name))

Anwendung:

Robin = Cat('Robin')  # <- eine Instanz der Klasse Cat
Lancelot = Dog('Lancelot')  # <- eine Instanz der Klasse Dog

print(Robin.species)  # ein Attribut von Robin wird aufgerufen
Robin.talk()  # die Methode *talk* wird aufgerufen

chase(Robin, Lancelot) # die Funktion *chase* wird aufgerufen

Output:

cat
Robin says meow.
Lancelot is chasing Robin!

Eine Methode ist eine Funktion, die an einer Klasse hängt.

In manchen Sprachen gibt es eigentlich nur Methoden (etwa Java), in anderen gibt es freistehende Funktionen und Methoden (Python zB), in nicht-objektorientierten Sprachen gibt es nur Funktionen (C beispielsweise).

Eine Methode ist die Art etwas auszuführen. Zum Beispiel gibt es mehrere Methode um Kalorien zu verbrennen (Joggen, schwimmen...)

Eine Funktion ist eine Wirkungsweise bzw. ein Zweck. Also etwas funktioniert nur mit Strom oder Sport hat die Funktion Kalorien zu verbrennen