获取作为参数传递给父函数的函数名称

时间:2019-05-07 20:25:54

标签: python python-3.x object

给出以下代码,如何打印作为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 个答案:

答案 0 :(得分:1)

您需要将wtfisthis替换为_function.__name__

请注意,您正在将字符串而不是函数传递给self.dictlooper。要解决此问题,请像这样定义child1和child2:

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

答案 1 :(得分:1)

您没有将函数或子进程传递给dictlooper。 (您甚至没有使用子进程。)您正在传递字符串。这些字符串是由名为child1child2的函数返回的,但是Python并没有记录字符串所处的函数。

您无法代替wtfisthis来获取函数名称信息。您可能必须更改代码的其余部分,也许是通过实际传递函数。