передача себя в качестве аргумента в вспомогательном методе - PullRequest
5 голосов
/ 11 января 2012

Я работаю с классом и пытаюсь вызвать вспомогательный метод из класса. Я получил следующий код для работы, но я не уверен, почему я должен передавать «self» в качестве аргумента вспомогательной функции, когда я вызываю его, когда у меня уже есть «self» в качестве аргумента в методе. Есть ли причина, по которой я должен передать его в качестве аргумента при вызове Frequency .__ helper (self, record) в приведенном ниже примере?

Спасибо!

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

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Правильный способ вызова метода - просто

var = self.__helper(record)

Это делает то же самое, но более интуитивно.

2 голосов
/ 11 января 2012

Да, в этом случае вы должны это сделать, потому что вы не объявляете функцию как @ staticmethod .Когда метод не является статическим, он требует передачи экземпляра.

Если вы сделаете что-то вроде:

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

, вам не нужно будет указывать self в списке аргументов.

...