如果我用关键字参数定义一个类方法,则:
class foo(object):
def foodo(thing=None, thong='not underwear'):
print thing if thing else "nothing"
print 'a thong is',thong
调用该方法将生成TypeError
:
myfoo = foo()
myfoo.foodo(thing="something")
...
TypeError: foodo() got multiple values for keyword argument 'thing'
这是怎么回事?
问题在于,传递给python中类方法的第一个参数始终是在其上调用该方法的类实例的副本,通常标记为self
。如果这样声明了该类:
class foo(object):
def foodo(self, thing=None, thong='not underwear'):
print thing if thing else "nothing"
print 'a thong is',thong
它的行为符合预期。
说明:
如果不self
作为第一个参数,则在myfoo.foodo(thing="something")
执行时,将foodo
使用arguments调用该方法(myfoo, thing="something")
。myfoo
然后将该实例分配给thing
(因为thing
是第一个声明的参数),但是python也会尝试分配"something"
给thing
,因此是Exception。
为了演示,请尝试使用原始代码运行它:
myfoo.foodo("something")
print
print myfoo
您将输出如下:
<__main__.foo object at 0x321c290>
a thong is something
<__main__.foo object at 0x321c290>
您可以看到已为“事物”分配了对类“ foo”的实例“
myfoo”的引用。文档的此部分说明了函数参数的工作原理。
我是一种新的熊猫,我正在使用和来枢转我的数据帧,我得到了这个错误: TypeError: Swplevel()得到了一个意外的关键字参数axis 我已经检查了熊猫文件,功能以轴为参数,请问我做错了什么!非常感谢。
对于范围(1,5)内的i: 范围(1,5)内的i在()1中的TypeError回溯(最近一次调用): ---- TypeError: trat()得到了一个意外的关键字参数'runs' 我在Jupyter笔记本中执行代码时遇到这个错误,我还导入了这些库 请帮忙。谢谢你。
问题内容: 我是Django的新手,我无法弄清楚这个错误。请帮忙。它提供了TypeError- save()得到了意外的关键字参数’force_insert’。我测试了下面的代码,他们能够保存新的用户注册,但现在将不再保存… 这是我认为有问题的views.py的一部分: 和models.py 问题答案: 当您在Django中覆盖模型的save方法时,还应该传递和覆盖方法。该代码可能工作正常:
这是错误: 我想使用像你在代码中看到的cookie,但我不能,有人能帮我吗?
下面看似简单的代码抛出以下错误 回溯(最近一次调用last):文件“search.py”,第48行,pageToken=page_token)。方法中的第716行执行()文件“C:\Users\Choi\AppData\Local\Programs\Python\Python37\lib\site packages\GoogleAppClient\discovery.py” raise TypeE
我正在尝试转换大熊猫的unix时间。我从一个csv文件中读取了这个,但是当我试图转换它时,我得到了上面的错误。 完全回溯 附加信息: 熊猫的版本是:0.8。0 操作系统:Debian,使用sudo apt get install python pandas安装(根据官方网站) 样本数据