daw*_*awg 5 python idioms self
我已经阅读了关于'self'解释的SO帖子,我已经阅读了关于类的Python文档.我想我理解selfPython类中的用法及其中的约定.
但是,对于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
Run Code Online (Sandbox Code Playgroud)
更换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
Run Code Online (Sandbox Code Playgroud)
没有像__init__我这样的成语,这里为什么self在第一种情况下被使用.我已经self在程序功能中看到了其他地方的使用,并且发现它令人困惑.
所以我的问题是:如果没有类或方法,为什么要使用self函数定义而不是描述性参数名?
在示例中,bit_length被定义为int类的函数,因此实际上存在"类或方法".这个想法是你'要'一个整数给它的bit_length,因此它被定义为将self作为参数.