Я пытаюсь управлять некоторыми функциями в python, устанавливая атрибуты членов класса, и вот в чем проблема
class Test:
def __init__(self):
self.callback=b
def a(self,name):
print(name)
def b(): # a function that does anything
print("I am d")
t=Test()
t.a(t.callback.__name__) #Prints 'b'
Итак, у меня напечатано 'b', но я бы хотел, чтобы это могло быть 'обратным вызовом', поэтому я могу использовать это имя в функции 'a', чтобы найти других членов в моем объекте с именем, которое начинается с 'обратного вызова'
Есть ли способ получить это? Заранее спасибо
В принципе способ есть, но он будет ужасно медленным. Не говоря уже о довольно запутанном обслуживании. Какую проблему ты пытаешься решить?
Хорошо, понятно, спасибо за ссылку. Итак, если я хорошо понимаю, невозможно получить другое имя, потому что self.callback = b не реплицирует функцию, поэтому он использует имя назначения
@MisterMiyagi Я использую несколько функций обратного вызова в объекте, назначенном таким образом, и каждая из них также имеет связанную переменную в этом объекте. И у меня есть последняя функция, которая вызывает один из обратных вызовов и также должна использовать связанные данные. Так как функции обратного вызова и данные имеют одинаковое имя, я подумал, что это будет легко сделать, не передавая данные в параметре
@MisterMiyagi, но это было сделано специально, чтобы оптимизировать время вычислений, поэтому я, возможно, попробую другие варианты
Возможно, вы ищете простой диктант. Функции - это действительные ключи dict.






Нет, вы не можете (на самом деле не должны) переходить от
__name__функции к имени ее переменной или от любого значения к любому имени. Недавно у нас был связанный вопрос здесь.self.callback = b- это просто присвоение еще одного имени (которых может быть тысячи) некоторому функциональному объекту в памяти. В любом случае, когда вы можете записатьt.callback, вы знаете, чтоtуже имеет атрибут с именемcallback.