方法可以匿名引用自身吗?

问题描述 投票:1回答:3

我刚刚编写了一个小函数,该函数返回自己的参数作为字典:

from inspect import signature

class MyClass:
    def MyFunc(self, thing1=0, thing2=0, thing3=0, thing4="", thing5=""):
        P = {}
        for p in list(signature(self.MyFunc).parameters):
            P[p] = eval(p)

        return P   

抛开为什么,任何人都想这样做(并接受我已经从更广泛的上下文中提炼出一个非常简单的示例来探讨一个非常具体的问题),那里有一个明确的引用self.MyFunc。” >

我已经看到避免这种情况的复杂方法,例如:

globals()[inspect.getframeinfo(inspect.currentframe()).function]

globals()[sys._getframe().f_code.co_name]

但是我想知道是否有类似匿名的super()构造,Python提供了在父类中引用相同名称的方法的功能,该方法可以优雅地允许函数匿名地引用自身,即不必命名自己。

我怀疑不是,从python 3.8开始,没有办法做到这一点。但是认为这是一个值得提出的问题,可以探讨并邀请我纠正怀疑。

我刚刚编写了一个小函数,该命令以dict的形式返回其自身的参数:来自检查导入签名类MyClass:def MyFunc(self,Thing1 = 0,Thing2 = 0,Thing3 = 0,Thing4 =“”,Thing5 =“” ):...

python python-3.x function self-reference
3个回答
3
投票

不存在这样的构造。函数中的代码没有引用该函数的特殊方式。


0
投票

您可以使用将参数列表添加到传递给方法的参数的装饰器来完成。


-1
投票

正如user2357112所说,您无法从该函数中获得任何简单的方法来获取函数的名称,但是如果您只是想让一个函数将其作为dict返回,则可以使用这个:

© www.soinside.com 2019 - 2024. All rights reserved.