在挖掘python Counter类时collections,我发现了一些我认为特殊的东西:它们没有self在__init__函数的参数中明确使用参数.
请参阅下面的代码(直接复制而不使用docstring):
class Counter(dict):
def __init__(*args, **kwds):
if not args:
raise TypeError("descriptor '__init__' of 'Counter' object "
"needs an argument")
self, *args = args
if len(args) > 1:
raise TypeError('expected at most 1 argments, got %d' % len(args))
super(Counter, self).__init__()
self.update(*args, **kwds)
Run Code Online (Sandbox Code Playgroud)
稍后在同一个类中,update和subtract方法也以相同的方式定义.
在你向我指出有关self课程如何运作的问题之前,我会注意到我不相信这是一个重复的问题.我理解self通常self是如何工作的,而不是关键字(只是标准实践)等.我也理解这段代码是有效的(我不是在质疑*unpack/explode/starred-expressions语法的有效性)
我的问题与为什么......
__init__其他正常(非@static/ @class方法),以及在未来应该考虑在什么情况下使用它?self手动填写这些方法(例如Counter.__init__(some_counter))?还是其他例子?我不得不认为它与TypeError("描述符......")有关.
如何格式化xlwings中的表格?例如,如果我想将 Excel 样式“浅蓝色,表格样式浅 2”添加到 xlwings 中的 Range 对象。
由于它不在 xlwings 文档中,我相信它看起来像这样(在连接到 wb 和所有内容之后):
xw.Range('A1').api. #Something goes here
Run Code Online (Sandbox Code Playgroud)
作为后续问题,如何了解在获取 api 对象后您有哪些选项?我看到这样做的唯一地方是在其他问题中,这里基本上只是对此类问题的答案的汇编。
(这样我们就不用一直打扰你了,菲利克斯;))