【发布时间】:2014-09-21 02:46:16
【问题描述】:
我想要一个类似于 dict 的 class TestClass 的东西,它有一个非默认参数。当我访问时,我不知道所要求的元素是否已经出现。所以TestClass:
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。所以也欢迎任何其他建议;-)
【问题讨论】:
标签: python dictionary karma-runner defaultdict