问题在于,传递给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")printprint myfoo您将输出如下:
<__main__.foo object at 0x321c290>a thong is something<__main__.foo object at 0x321c290>
您可以看到已为“事物”分配了对类“ foo”的实例“
myfoo”的引用。文档的此部分说明了函数参数的工作原理。



