2016-10-28 3 views
0

Я хотел бы, если знать, можно создать необязательно @staticmethod, я имею в виду ... экземпляры и не-экземпляры могли бы использовать что-то вроде:Необязательно @staticmethod в классах

class Something: 

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

Как насчет вызова метода класса из метода экземпляра? – Samadi

+2

Возможно, но ... зачем? – agg3l

+0

Хм, интересно ... есть ли лучшая практика для такой вещи? –

ответ

0

Вы можете увидеть this really helpful discussion на питона методы. Подводя итог, каждый метод в классе питона является атрибутом класса, так что вы могли бы:

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

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

Это даст следующие результаты:

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

И:

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

Я не уверен, что это лучшая практика, но то, что вы просите у , возможно. Надеюсь, это поможет прояснить!

Смежные вопросы