Я прочитал сообщение 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
в определении функции, а не в описательном имени параметра?