получить имя функции, переданной в качестве аргумента родительской функции - PullRequest
0 голосов
/ 07 мая 2019

учитывая приведенный ниже код, как мне напечатать имя дочернего процесса, который был передан в качестве аргумента self.looper(_function=)? Я понятия не имею, как это сделать! Я пытаюсь сделать логику, основанную на том, какая функция была передана в _function. Надеюсь, я передал вопрос правильно. спасибо !!

class okheregoes(object):

    def __init__(self):
        pass


    def looper(self, _function):
        print('the function name that was passed to _function is {}'.format(_function.__name__))
        if _function.__name__ == 'child1':
            print('it was child 1 this time')
        if _function.__name__ == 'child2':
            print('it was child 2 this time')



    def child1(self, _number):
        return 'my favorite number is {}'.format(_number)

    def child2(self, _number):
        return 'my favorite number is {}'.format(_number)

    def main(self):
        for i in range(1,10):
            self.looper(_function=self.child1(_number=i+1))
            self.looper(_function=self.child2(_number=i-1))





pleashelp = okheregoes()

if __name__ == '__main__':
    pleashelp.main()

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вы не передаете функции или дочерние процессы dictlooper.(Вы даже не используете дочерние процессы.) Вы передаете строки.Эти строки были возвращены функциями с именами child1 и child2, но Python не хранит записи о том, в каких функциях была строка.

Нет ничего, что вы могли бы поставить вместо wtfisthis, чтобы получитьинформация об имени функции.Вам придется изменить остальную часть кода, возможно, фактически передавая функции.

1 голос
/ 07 мая 2019

Вам нужно заменить wtfisthis на _function.__name__

Обратите внимание, что вы передаете строку, а не функцию self.dictlooper. Чтобы это исправить, определите child1 и child2 следующим образом:

def child1(self, _number):
    def inner():
        return 'my favorite number is {}'.format(_number)
    return inner
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...