Python 函数中的 'self
我看过关于“self”的解释帖子,也读过Python的类相关文档。我觉得我明白在Python类中怎么用self
以及它的用法规范。
不过,作为一个相对新手,我不太明白为什么有些人在普通函数定义中也用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
而不是一个更能描述的参数名呢?
2 个回答
4
其实没有特别的理由。不过,如果你要把它加到一个已经存在的类上,这样做就像是在给可能阅读这段代码的人发个小通知。
6
在这个例子中,bit_length 是为整数类(int)定义的一个函数,所以它实际上是一个“类或方法”。这里的意思是,你可以“请求”一个整数来告诉你它的位数长度,因此它被定义为接受自身(self)作为参数。