Принимает ровно 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')
Если это не так, предоставьте фрагмент кода, который поможет вам в дальнейшем.