Zweck der aufrufenden Funktion ohne Klammern python

Folgendes:

class objectTest():

    def __init__(self,a):

        self.value = a

    def get_value(self):

        return self.value


class execute():

    def __init__(self):

        a = objectTest(1)
        b = objectTest(1)

        print(a == b)
        print(a.get_value() == b.get_value)
        print(a.get_value() == b.get_value())
        print(a.get_value == b.get_value)


if __name__ == '__main__':

    execute = execute();

Dieser code return

>>>
False
False
True 
False

Gegeben, dass get_value ist eine Funktion, ich würde erwarten, dass die Ausführung zu stoppen und einen Fehler zurückgeben, aber es funktioniert nicht. Kann jemand erklären, warum der python-interpreter erlauben diese Art der syntax anstatt ein Attribut Fehler, die in meinem Fall würde gespeichert haben mir wertvolle Zeit.

  • Versuchen Sie, zu bleiben, um zu PEP 8 Konventionen mit variable/Klasse/Methode zu benennen. Die oben aus meinem Gehirn zu tun, klappt für ein paar Sekunden, bis ich erkannte einige Ihrer Sachen, die genannt wurden, wie Funktionen waren in der Tat die Klassen.
  • Alle Recht.. ich werde das nächste mal. Dank
  • Nur im Fall, dass Sie hier angekommen sind, weil Sie wirklich wollen, um eine Funktion aufzurufen, ohne paranetheses beachten ist, ist möglich, manchmal über hacky decators. z.B. >>> f = lambda *args: print('hi') >>> @f ... class _: pass ... hi
InformationsquelleAutor user3311142 | 2014-02-14
Schreibe einen Kommentar