3
我想有一個像dict
的class TestClass
它有一個非默認參數。當我訪問時,我不知道所請求的元素是否已經存在。所以TestClass
:python:defaultdict與非默認參數
class TestClass(object):
def __init__(self, name):
self.name = name
self.state = 0
def getName(self):
self.state = self.state + 1
return "%s -- %i" % (self.name, self.state)
然後dict
和訪問功能:
db = {}
def getOutput(key):
# this is a marvel in the world of programming langauges
if key not in db:
db[key] = TestClass(key)
return db[key]
和實際測試代碼:
if __name__ == "__main__":
print "testing: %s" % getOutput('charlie').getName()
尼斯。但我想知道是否有更優雅的解決方案。瀏覽時,defaultdict進入我的腦海。但是,這是行不通的,因爲我不能傳遞參數給default_factory:
from collections import defaultdict
d = defaultdict(TestClass)
print "testing %s" % d['tom'].getOutput()
給TypeError: __init__() takes exactly 2 arguments (1 given)
......我是有另一種解決方案?
此外,我想改進我的Python。所以任何其他建議也歡迎;-)
很好的解決方案。謝謝! – user3474620 2014-09-20 20:09:06
這真的很酷,我能找到的唯一答案很容易顯示如何做到這一點 – citizen2077 2017-06-16 10:22:15