У меня есть простой класс, в котором я хочу генерировать методы на основе унаследованных полей класса:
class Parent:
def __init__(self, *args, **kwargs):
self.fields = getattr(self, 'TOGGLEABLE')
self.generate_methods()
def _toggle(self, instance):
print(self, instance) # Prints correctly
# Here I need to have the caller method, which is:
# toggle_following()
def generate_methods(self):
for field_name in self.fields:
setattr(self, f'toggle_{field_name}', self._toggle)
class Child(Parent):
following = ['a', 'b', 'c']
TOGGLEABLE = ('following',)
На данный момент существует toggle_following
функция, успешно сгенерированная в Child
.
Затем я вызываю его с одним параметром:
>>> child = Child()
>>> child.toggle_following('b')
<__main__.Child object at 0x104d21b70> b
И он выводит ожидаемый результат в операторе print
.
Но мне нужно получитьимя вызывающего абонента toggle_following
в моей общей функции _toggle
.
Я пытался использовать модуль inspect
, но, похоже, он имеет другое назначение в отношениипроверка функций.