2012-01-11 10 views
5

Sto lavorando con una classe e sto cercando di chiamare un metodo di supporto all'interno della classe. Ho ottenuto il seguente codice per funzionare, ma non sono sicuro del motivo per cui devo passare "self" come argomento alla funzione helper quando lo chiamo quando ho già "self" come argomento nel metodo. C'è una ragione per cui devo passarlo come argomento quando chiamo Frequency .__ helper (self, record) nell'esempio qui sotto?passare l'auto come argomento in un metodo di supporto

Grazie!

class Frequency: 

    def __init__(self, record): 
     self.record = record 

    def __helper(self, datalist) 
     do something to datalist... 

    def getFreq(self): 
     allrec = self.record 
     record = allrec[1].split(' ') 
     var = Frequency.__helper(self, record) 
     return var 

risposta

2

Il modo giusto per chiamare il metodo è solo

var = self.__helper(record) 

che fa la stessa cosa, ma in un modo più intuitivo.

2

Sì, in questo caso è necessario, perché non si sta dichiarando la funzione come @staticmethod. Quando un metodo non è statico, richiede un'istanza da passare.

Se si fa qualcosa di simile:

class Frequency: 
    @staticmethod 
    def test(datalist): 
     pass 

non verrà richiesto di definire sé nella lista degli argomenti.