«Я» Python для функции

Я прочитал сообщение SO на тему «Я», и я прочитал документацию Python по классам. Я думаю, что понимаю использование self в классах Python и соглашения в них.

Однако, будучи относительно новичком в Python и его идиомах, я не могу понять, почему некоторые используют self в определении функции процедурного типа. Например, в документации Python по целочисленным типам пример функции:

def bit_length(self):
    s = bin(self)       # binary representation:  bin(-37) --> '-0b100101'
    s = s.lstrip('-0b') # remove leading zeros and minus sign
    return len(s)       # len('100101') --> 6

Замена self на num дает тот же функциональный результат; то есть:

def bit_length(num):
    s = bin(num)       # binary representation:  bin(-37) --> '-0b100101'
    s = s.lstrip('-0b') # remove leading zeros and minus sign
    return len(s)       # len('100101') --> 6

Нет идиомы вроде __ init __ и т.д., которую я могу понять здесь, почему в первом случае используется self . Я видел такое использование self где-то еще в процедурных функциях и нахожу это запутанным.

Итак, мой вопрос: если нет класса или метода, зачем использовать self в определении функции, а не в описательном имени параметра?

5
задан Community 23 May 2017 в 12:20
поделиться