class Test:
def somemethod(self):
def write():
print 'hello'
write()
x = Test()
x.somemethod()
write()是一个将通过somemethod()多次使用的函数。 somemethod()是类中唯一需要使用它的函数,因此在somemethod()之外定义它似乎很愚蠢。关闭似乎是要走的路。
当我运行该代码时,我收到以下错误:
TypeError: somemethod() takes exactly 2 arguments (1 given)
我做错了什么? self
是否被传递给write()? :/
答案 0 :(得分:3)
我发现无法重现您报告的问题:
>>> class Test(object):
... def somemethod(self):
... def write():
... print 'hello'
... write()
...
>>> x = Test()
>>> x.somemethod()
hello
>>>
所以我相信你一定做过一些转录错误,或其他什么。当你运行我正在显示的代码时,你看到了什么? (在所有平台上的Python 2.4,2.5,2.6,2.7中完全相同)。
答案 1 :(得分:0)
它也适用于我:
>>> class Test:
... def somemethod(self):
... def write():
... print 'hello'
... write()
...
>>>
>>> x = Test()
>>> x.somemethod()
hello
>>>
我认为您可能正在使用标签和空格,或者您的标识错误