У меня возникла проблема с кнопкой, выполняющей ее команду, когда она создана. Чтобы остановить это, у меня есть функция, которая может остановить это поведение.Функция для вызова функций не работает
Это функция, которая делает функции вызываемыми без выполнения при создании моей кнопки. Обычно он отлично работает, но с некоторыми функциями он случайно отклоняет любой ввод! Вот код:
class Callable(object):
def __init__(self, func, *args, **kwds):
self.func = func
self.args = args
self.kwds = kwds
def __call__(self, *args, **kwds):
return self.func(self.args)
def __str__(self):
return self.func.__name
Кажется совершенно случайным, какие вопросы принимаются, а какие нет. Я действительно отчаянный, потому что для написания своего синонима этого класса требуется много времени, я адаптирую их с числом args
и kwds
, тогда он работает нормально. Но теперь я подошел к тому моменту, когда не знаю, сколько аргументов я собираюсь пройти, так что это больше не сработает.
Вопрос:
- Почему этот класс не принимает все функции?
- Как я могу изменить это поведение?
Приведите пример функции, которая работает, и функцию, которая этого не делает. – Kevin
@Kevin: Это будет сложно, я использую модуль под названием болотный, это модуляция для tkinter. Он меняет весь синтаксис, и, как я уже сказал, это случайные функции, которые работают, а какие нет. Я совершенно уверен, что видел бы образец –
Можете ли вы объяснить, что именно это должно делать? например вы, кажется, передаете '* args' как' __init__', так и '__call__'. Если бы я сделал: 'Callable (func, 1, 2, 3) (4, 5)' - Каков эквивалентный вызов 'func', который вы ожидаете? например (1, 2, 3)), 'func (1, 2, 3, 4, 5)', 'func (4, 5)) ', ... – mgilson