【发布时间】:2019-05-24 22:20:22
【问题描述】:
在阅读python的string模块的源码时,被Formatter这个类弄糊涂了。
Formatter 类中的format 方法(不是静态方法也不是类方法)没有self 作为输入参数def format(*args, **kwargs):,但以某种方式直接在方法中使用它。 self, *args = args.
请解释一下这个用法。
class Formatter:
def format(*args, **kwargs):
if not args:
raise TypeError("descriptor 'format' of 'Formatter' object "
"needs an argument")
self, *args = args # allow the "self" keyword be passed
try:
format_string, *args = args # allow the "format_string" keyword be passed
except ValueError:
if 'format_string' in kwargs:
...
else:
...
return self.vformat(format_string, args, kwargs)
【问题讨论】:
-
self是不是关键字,它是按约定使用的名称:docs.python.org/3.7/reference/lexical_analysis.html#keywords -
@UnholySheep,谢谢。