包含self时,只需要2个参数(1个给定)

时间:2013-02-04 18:56:35

标签: python self

每当我调用我的函数def hello(self,value)时,我都会收到错误:takes exactly 2 arguments (1 given)所以我该怎么办?

或者还有其他可能吗?self.statusitem.setImage_(self.iconsuccess)

编辑:

我的代码的简单表示

Class A:
   func_in_class_B(value)

Class B:
def finishLaunching(self):
   self.statusitem.setImage_(self.icon)
def func_in_class_B(self,value)
   self.statusitem.setImage_(self.iconsuccess)

A类是后台线程,B类是我的主线程,我想操纵`self.statusitem.setImage_(self.icon)

2 个答案:

答案 0 :(得分:3)

听起来你没有正确调用hello函数。给出以下类定义:

class Widget(object):
    def hello(self, value):
        print("hello: " + str(value))

你可能会把它称为像这样的静态函数:

Widget.hello(10)

这意味着没有窗口小部件类的实例作为第一个参数传递。您需要将hello函数设置为静态:

class Widget(object):
    @staticmethod
    def hello(value):
        print("hello: " + str(value))

Widget.hello(10)

或者在像这样的特定对象上调用它:

widget = Widget()
widget.hello(10)

答案 1 :(得分:1)

这很可能是因为你的hello函数不是类成员。在这种情况下,你不需要在方法声明中提供自我....而不是你好(自我,价值)只是说你好(价值)

例如......此代码段完全正常

def hello(value):
    print 'Say Hello to ' + value

hello('him')

如果不是这种情况,请提供您的代码段,以便进一步帮助您。