Куда мне всунуть аргумент self?

Вот ошибка если я НЕ вставляю в скобки аргумент self:

File "F:\Programming\Assistant\Yulia_0_1_5.py", line 192, in
button.config(command=lambda: main()) # Вызов кнопкой функции main()
TypeError: main() missing 1 required positional argument: 'self'

Вот ошибка если я ВСТАВЛЯЮ аргумент self в скобки:

File "F:\Programming\Assistant\Yulia_0_1_5.py", line 192, in
button.config(command=lambda: main(self)) # Вызов кнопкой функции main()
NameError: name 'self' is not defined

Вот место в коде:

button.config(command=lambda: main(self)) # Вызов кнопкой функции main(self)

Аргумент self находится в скобках названия функции, тобишь, выглядит так - def main(self). Этот аргумент нужен для работы базы данных. Вопрос: куда мне нужно всунуть аргумент self? P.S. Что значит lambda: я не знаю.


Ответы (1 шт):

Автор решения: Roman Konoval

main это функция в каком-то классе, допустим так:

class SomeClass:
   def main(self):
      ...

Чтоб вызвать метод main у этого класса вам нужен объект класса SomeClass и, если допустить, что у вас есть на объект ссылка в переменной some_class_obj, то вызов будет выглядеть так:

button.config(command=lambda: some_class_obj.main())

При вызове some_class_obj.main() внутри main ссылка на some_class_obj будет автоматически передана в первом аргументе, т.е. self.

Где в вашей ситуации взять объект, зависит от структуры программы.

→ Ссылка