用Python编写一次性或匿名类?

Art*_*are 5 python class anonymous-class

我经常有一些简单的类,我只想要一个实例。作为一个简单的例子:

import datetime
import sys

class PS1(object):
    def __repr__(self):
        now = datetime.datetime.now()
        return str(now.strftime("%H:%M:%S"))

sys.ps1 = PS1()
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以将定义和实例化为一个步骤,并获得相同的结果?

再举一个例子,就像一个简单易懂的东西一样。

class Example(object):
    def methodOne(self, a, b):
        return a + b

    def methodTwo(self, a, b):
        return a * b

example = Example()
Run Code Online (Sandbox Code Playgroud)

我四处搜寻,却一无所获(很多人乱扔这些单词one-offanonymous但似乎没人在谈论我是同一件事)。我试过了,但是没有用:

example = class(object):
    def methodOne(self, a, b):
        return a + b

    def methodTwo(self, a, b):
        return a * b
Run Code Online (Sandbox Code Playgroud)

我意识到我没有太多收获,只是我不必输入一行内容,而在我的命名空间中少了几行,所以我知道这是否不存在。

mgi*_*son 5

我想你不会经常看到这个,因为它真的很难读,但是......

sys.ps1 = type('PS1', (object,), {'__repr__': lambda self: datetime.datetime.now().strftime('%H:%M:%S')})()
Run Code Online (Sandbox Code Playgroud)

会在这里做的伎俩...

我使用type动态创建一个类(参数是名称、基类、类字典)。__repr__在这种情况下,类字典只包含一个函数。

希望我们能同意完整格式更容易理解和使用;-)。