假设您决定(是的,这太可怕了)以下列方式创建句柄输入:用户在导入类后在python控制台上键入一个命令,该命令实际上是一个类名,类名称的__str__
函数实际上是一个带有副作用的函数(例如,该命令为“北”,该函数更改了一些全局变量,然后返回描述当前位置的文本)。显然这是一个愚蠢的事情,但你会怎么做(如果可能的话)?Python __str__:Magic Console
注意的基本问题是如何定义一个类__str__
方法,而无需创建类的实例,否则这将是简单的(但仍然只是疯狂:
class ff:
def __str__(self):
#do fun side effects
return "fun text string"
ginst = ff()
>>ginst
在py3k中,您需要传递'metaclass'作为关键字:'class Bar(metaclass = Magic):pass'以使此方法正常工作。 – SilentGhost 2009-11-10 18:16:23
@SilentGhost,感谢提示 – 2009-11-10 18:21:33
是的,这正是我想到的。 – Brian 2009-11-10 22:12:38