2017-02-21 5 views
1

Einige Listenoperationen wird durch eine Punktnotation erreichtUnterschied zwischen Methode und Funktion

C.append(e) 

während andere Operationen der Liste Objekt als Argument einer Funktion erfordert, wie in

len(C) 

Warum diese das passiert? Gibt es Regeln, ob die Funktionalität eines Objekts über den ersten Weg (Methode) oder die zweite (Funktion) erreicht wird? Danke.

+0

Da Sie eine Liste anhängen müssen, hängen Sie ist eine Instanz Methode, weil Sie eine Instanz dafür brauchen zu arbeiten, aber um Länge zu finden, müssen Sie nur ein Argument übergeben. 'len' ist ein global builtin. – Li357

+0

normalerweise diejenigen mit Klammern geben einen Wert zurück – WhatsThePoint

+0

Im Falle von 'len' glaube ich, es ruft nur die Methode' __len__' des Objekts auf jeden Fall. Im Zweifelsfall konsultieren Sie die Dokumentation. – JETM

Antwort

1

Es gibt keinen Unterschied für viele eingebaute Funktionen. Die globalen Funktionen wie len, iter sind str Anrufe Methoden zum Objekt __len__, __iter__, __str__ usw.

Siehe Basic customization und Emulating container types in Python Referenz:

Objekt. __len__ (self)

Aufruf zur Implementierung der integrierten Funktion len(). Sollte das Rück die Länge des Objekts, eine ganze Zahl> = 0 ...

Vorteil solchen soluttion ist, dass ein Objekt dieser speziellen Funktionen außer Kraft setzen kann nur durch zwingende entsprechende „Doppelstrich“ Methoden, z __len__.

Obwohl append hat kein eingebautes, da es sich um eine weniger universellen Einsatz als len, str usw.

Verwandte Themen