2016-05-02 14 views
1

Ich weiß, es ist guter Stil in anderen Sprachen (C#, JAVA, ...) zu machen "private" Methoden (mit zwei Unterstriche) static, wenn möglich. Gibt es eine Empfehlung für Python?Python: Machen Sie private Klassenmethoden immer statisch wenn möglich?

Ich würde sie lieber nicht statisch machen, weil sie nur privat sind (ich möchte sie nicht in Utility-Klassen verschieben und sie sind nicht leistungsrelevant) und ich möchte vermeiden, meinen Code mit Decorators zu überladen. Auf der anderen Seite sagt mir der statische Code-Analysator (und ich möchte Code in der "Pythonic" Weise schreiben).

+0

Meine * persönliche Meinung * zu diesem Thema wäre, keine statischen Klassenmethoden zu verwenden, es sei denn, sie werden benötigt, weder private noch öffentliche. Halte es einfach. Wenn es sich nicht um eine sehr kleine Methode handelt, die oft aufgerufen wird und das gesamte Programm erheblich verlangsamt, macht es keinen Sinn, jedes winzige Bit zu optimieren. –

Antwort

1

Die kurze Antwort ist, dass Sie fast nie statische Methoden in Python verwenden sollten. Sie waren added by mistake.

Ich wollte Klassenmethoden implementieren, aber zuerst habe ich sie nicht verstanden und versehentlich statische Methoden zuerst implementiert. - Guido van Rossum

Mit einer Klassenmethode oder einer Instanzmethode können Sie fast das erreichen, was Sie wollen.

Mehr darüber, warum statische Methoden in Python meist nutzlos sind here.

+0

Vielen Dank für diese Antwort (inkl. Der nützlichen Links)! – charlyinalbon

0

In Python gibt es keine "private Methode", alle Methoden sind öffentlich. Das einzige, was Ihnen sagt, dass eine Methode nicht zur öffentlichen Verwendung gedacht ist, ist, dass der Name mit einem Unterstrich beginnt.

Wenn Ihre Methoden nichts von self (eine Instanz der Klasse) referenzieren, können Sie sie statisch machen, um die Speichernutzung Ihrer Anwendung zu optimieren.

+0

Danke für die Bemerkung über private und öffentliche Methoden. Daher habe ich die Frage geklärt. – charlyinalbon

+0

Es ist nicht klar, was Sie erreichen möchten. Wenn Sie diese Methoden nicht statisch machen wollen, ignorieren Sie die Warnung vom statischen Code-Analysator, – sc3w

Verwandte Themen