【发布时间】:2021-05-15 06:05:48
【问题描述】:
标记为已解决,因为: 已解决的解决方案为该问题提供了一个足够好的解决方案,尽管它并不能完全解决按需动态生成函数名称的问题。
我想生成一个函数,它返回自己的签名和参数。这在 Python 中可能吗?因此,该函数由调用本身生成,并返回代表其自身名称和参数的字符串。
这是我正在寻找的一个简单示例:
class Object(object):
#Impl here?
pass
a = Object()
returned_string = a.foo(param1 = 1, param2 = "cheese")
print(returned_string)
#should print: a.foo(param1 = 1, param2 = "cheese")
#or print: foo(param1 = 1, param2 = "cheese")
重要的是,foo 是一个任意名称,不应“硬编码”而是生成。
代码应允许以下内容:
print(a.doodle(param1 = 32)) #prints: doodle(param1 = 32)
print(a.bar(param42 = "pi")) #prints: bar(param42 = "pi")
没有定义进一步的功能。
谢谢:)
【问题讨论】:
-
class Object(object)是怎么回事?你能用一个例子详细说明吗?也许制作一个可以用 param1 和 param2 重现的类 -
用
import inspect和inspect.stack()[0][3]可以得到当前函数的名字。
标签: python python-3.x metaprogramming code-generation python-decorators