Lo spostamento in una funzione è comune, se non tocca affatto la classe.
Se manipola attributi di classe, utilizzare il classmethod
decoratore:
@classmethod
def spam(cls, ...):
# cls is the class, you can use it to get class attributes
classmethod
e staticmethod
(che è lo stesso come il primo, salvo che il metodo non ottiene un riferimento alla classe dalla sua prima parametro) sono stati introdotti abbastanza recentemente. Significa che alcuni programmatori Python sono usati per evitare metodi statici e di classe.
Alcuni programmatori Python esperti vi diranno che questi decoratori complicano le cose; alcune altre persone (in genere ex programmatori C# o Java) ti diranno che l'utilizzo di una funzione non è abbastanza orientato agli oggetti. Penso che sia solo una questione di preferenza.
fonte
2010-04-20 09:49:52
Penso che '' @ staticmethod'' sia il più appropriato qui di '' @ classmethod'', perché apparentemente non manipola alcuna proprietà o stato della classe. – mcepl
I programmatori Java usano anche metodi statici –