2016-10-28 1 views
0

Ich mag würde, wenn wissen ist, möglich, ein optional @staticmethod zu schaffen, ich meine ... Instanzen und Nicht-Instanzen verwenden könnten, so etwas wie:Optional @staticmethod in Klassen

class Something: 

    @staticmethod 
    def something(self, file): 
     # if argument is provided, use as static, if not, should be a instance calling.. 
+0

Was ist mit dem Aufruf der Klassenmethode von einer Instanzmethode? – Samadi

+2

Es ist möglich, aber - wofür? – agg3l

+0

Hm, interessant ... gibt es eine bessere Praxis für so etwas? –

Antwort

0

Sie this really helpful discussion auf Python sehen Methoden. Zusammenfassend ist jede Methode in einer Python-Klasse ein Klassenattribut, so konnte man:

class Something: 
    def __init__(self, name): 
     self.name = name 

    def something(self=None, file=""): 
     if self: 
      print(self.name) 
     print(file) 

Dies würde die folgenden Ergebnisse liefern:

>>> Something.something(file="File") 
File 

Und:

>>> Something("My").something(file="File") 
My 
File 

Ich bin nicht sicher, ob dies die beste Praxis ist, aber was Sie für fragen, ist möglich. Hoffe das hilft zur Klärung!