可以不使用 class
关键字来定义类。
以下是一个示例:
get_i = lambda self: self.i
get_i.__name__ = 'get_i'
get_i.__qualname__ = 'Klass2.get_i'
dct = dict(a=1, i=4, get_i=get_i)
Klass2 = type('Klass2', (SuperK,), dct)
... 产生的最终结果与以下内容相同:
class Klass1(SuperK):
a = 1
i = 4
def get_i(self):
return self.i
我们如何为函数做类似的事情呢?也就是说,我们如何在不使用“def”或“lambda”关键字的情况下定义一个函数?如果以下两个代码片段创建了相同的foo,则“dehf”的纯Python实现可能是什么样子?
def foo(bar):
bar += 934
return bar
foo = dehf(blah, blah, blah, blah, [...])
lambda
来定义函数。你认为不使用lambda
也能定义函数吗? - Barmartype
的类的用例相当罕见(例如元类)。但是为什么你想要创建一个没有def
或lambda
的函数呢? - Chris_Randsbaz
的函数,但我们不知道当我们编写代码时它将被命名为baz
。因此,我们不能简单地编写def baz(* args):
。也许有一个装饰器,输出一个名为"pretty_
<foo
>"的函数,其中<foo>是传递给装饰器的函数。您可以编写func.__name__ = "pretty_" + foo.__name__
,但是还有其他构建函数的用例,没有def
关键字不容易处理。 - Toothpick Anemonedef
,例如https://dev59.com/amYs5IYBdhLWcg3wDPmt。目前感觉像是一个XY问题。 - Chris_Rands