假設您決定(是的,這太可怕了)以下列方式創建句柄輸入:用戶在導入類後在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