Принимает ровно 2 аргумента (1 дано) при включении себя

Каждый раз, когда я вызываю свою функцию 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 ответа

Похоже, вы неправильно вызываете свою функцию приветствия. Учитывая следующее определение класса:

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)

Скорее всего, это потому, что ваша функция hello не является членом класса. В этом случае вам не нужно указывать self в объявлении метода.... т.е. вместо hello(self, value) просто скажите hello(value)

Например... этот фрагмент работает абсолютно нормально

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

hello('him')

Если это не так, предоставьте фрагмент кода, который поможет вам в дальнейшем.

Другие вопросы по тегам