2010-04-20 13 views

risposta

53

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.

+4

Penso che '' @ staticmethod'' sia il più appropriato qui di '' @ classmethod'', perché apparentemente non manipola alcuna proprietà o stato della classe. – mcepl

+0

I programmatori Java usano anche metodi statici –

Problemi correlati