В методе __init__ отсутствует позиционный аргумент, хотя он явно переданPython

Программы на Python
Anonymous
В методе __init__ отсутствует позиционный аргумент, хотя он явно передан

Сообщение Anonymous »

У меня есть собственный виджет PlaylistView в kivy, который должен принимать другой пользовательский виджет в качестве аргумента для своего метода init:

Код: Выделить всё

class PlaylistView(Widget):
def __init__(self, node, **kwargs):  # (originally:) node: GridNode,...  (custom node, removed for min. reproducable exmple but still yields the same error)
super().__init__(**kwargs)
self.node = node
...
Но всякий раз, когда я пытаюсь создать его экземпляр, например: PlaylistView(1), PlaylistView(GridNode('test')) или PlaylistView( "test") (независимо от того, что я передаю в качестве аргумента), я получаю следующую ошибку:

Код: Выделить всё

 Traceback (most recent call last):
File "C:/Users/Maximilian.Wolf/PycharmProjects/MiaudioPyler/main.py", line 215, in 
PlaylistView("test")
File "C:/Users/Maximilian.Wolf/PycharmProjects/MiaudioPyler/main.py", line 157, in __init__
super().__init__(**kwargs)
File "C:\Users\Maximilian.Wolf\Miniconda3\envs\MiaudioPyler\lib\site-packages\kivy\uix\widget.py", line 359, in __init__
self.apply_class_lang_rules(
File "C:\Users\Maximilian.Wolf\Miniconda3\envs\MiaudioPyler\lib\site-packages\kivy\uix\widget.py", line 463, in apply_class_lang_rules
Builder.apply(
File "C:\Users\Maximilian.Wolf\Miniconda3\envs\MiaudioPyler\lib\site-packages\kivy\lang\builder.py", line 541, in apply
self._apply_rule(
File "C:\Users\Maximilian.Wolf\Miniconda3\envs\MiaudioPyler\lib\site-packages\kivy\lang\builder.py", line 663, in _apply_rule
self._apply_rule(
File "C:\Users\Maximilian.Wolf\Miniconda3\envs\MiaudioPyler\lib\site-packages\kivy\lang\builder.py", line 659, in _apply_rule
child = cls(__no_builder=True)
TypeError: __init__() missing 1 required positional argument: 'node'
Я также пробовал использовать node=None в init, те же результаты.
Может ли это быть как-то связано с kivy или с тем, как я вызвать super().__init__?

EDIT

Я попробовал это отдельно, это работает, но до сих пор не знаю, что вызывает ошибку .

Код: Выделить всё

from kivy.uix.widget import Widget

class PlaylistView(Widget):
def __init__(self, node, **kwargs):
super().__init__(**kwargs)
self.node = node

PlaylistView(1)
РЕДАКТИРОВАНИЕ 2
Дополнительная информация:
Что я сделал и не показывал в примере, так это загрузил кучу kv-файлов. с Builder.load_file(... Комментирование также устранит ошибку.

Подробнее здесь: https://stackoverflow.com/questions/705 ... rly-passed

Вернуться в «Python»