我经常有简单的类,我只需要一个实例。举个简单的例子:
import datetime
import sys
class PS1(object):
def __repr__(self):
now = datetime.datetime.now()
return str(now.strftime("%H:%M:%S"))
sys.ps1 = PS1()
有没有办法以某种方式将定义和实例化合并到一个步骤中并获得相同的结果?
再举个例子,简单易懂。
class Example(object):
def methodOne(self, a, b):
return a + b
def methodTwo(self, a, b):
return a * b
example = Example()
我用谷歌搜索了一无所获(很多人都在使用 one-off
和 anonymous
这样的词,但似乎没有人在谈论与我相同的事情)。我试过了,但没用:
example = class(object):
def methodOne(self, a, b):
return a + b
def methodTwo(self, a, b):
return a * b
我意识到我并没有得到太多,只有一行我不必输入加上我的命名空间中少了一个东西,所以我理解如果这不存在。
最佳答案
我想你不会经常看到这个,因为它真的很难读,但是......
sys.ps1 = type('PS1', (object,), {'__repr__': lambda self: datetime.datetime.now().strftime('%H:%M:%S')})()
会在这里做的伎俩......
我使用 type
动态地创建一个类(参数是名称、基类、类字典)。在这种情况下,类字典只包含一个函数 __repr__
。
希望我们能同意完整格式更容易理解和使用 ;-)。
关于python - 用 Python 编写一次性或匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24895416/