Метод экземпляра Python, выполняющий несколько вызовов метода экземпляра - PullRequest
0 голосов
/ 08 октября 2009

Вот некоторый фрагмент кода. Я проверил перечисленные методы, и они работают правильно, но когда я запускаю и тестирую этот метод (countLOC), кажется, что он инициализирует только первую переменную, у которой есть вызов метода экземпляра (i = self.countBlankLines()). Кто-нибудь знает очевидную причину, по которой я явно скучаю?

def countLOC(self):  
    i = self.countBlankLines()  
    j = self.countDocStringLines()  
    k = self.countLines()  
    p = self.countCommentLines()  
    return k-i-j-p

Возвращает -3, потому что countBlankLines() возвращает 3 (правильно). однако он должен вернуть 37 как countDocStringLines() = 6 и countCommentLines() = 4, а countLines() = 50. Спасибо.

1 Ответ

5 голосов
/ 08 октября 2009

Если бы локальные переменные не были инициализированы (невозможно, учитывая ваш код!), Они не были бы равны 0 - скорее, вы получите исключение NameError, когда попытаетесь их использовать. Это на 100% уверенно, что эти другие вызовы методов (кроме первого) возвращают 0 (или числа, равные 0 в выражении).

Трудно догадаться, не показывая их код, но из вашего комментария мой хрустальный шар говорит мне, что у вас есть итератор в качестве переменной экземпляра: первый метод для его итерации исчерпывает его, поэтому другие методы считают его пустым. 1003 *

...