这是我的代码快照:
class C(dict):
def __init__(*args, **kwds):
print 'args = {}'.format(args)
print 'kwds = {}'.format(kwds)
if not args:
raise TypeError("descriptor '__init__' of 'Counter' object needs an argument")
self = args[0]
args = args[1:]
if len(args) > 1:
raise TypeError('expected at most 1 arguments, got %d' % len(args))
super(C, self).__init__()
if __name__ == '__main__':
c = C()
当我运行这段代码时,输出让我感到困惑:
C:\Users\elqstux\Desktop>python wy.py
args = ({},)
kwds = {}
对于 c = C() ,我认为代码会抛出错误,因为在这种情况下 args 将是(),但从输出中可以看到, args 是({},),原因是什么? self,args = args [0],args [1:]#允许传递“self”关键字
*args
会是一个元组,但为什么在我的情况下它是({},)
,而不是()
? - BlackMamba