我是学习python的新手。
我的情况是我有很多课程,例如: G:
class A:
def __init__(self, entry):
...
def printf(self)
print "A"
class B:
def __init__(self, entry):
...
def printf(self)
print "B"
class C:
def __init__(self, entry):
...
def printf(self)
print "C"
接下来,我想要的是拥有一本字典,如下所示:
OBJECT_LIBRARY = {'A': A(), 'B': B(), 'C': C()}
因此,当我使用'KEY'引用字典时,字典应该返回该类型的初始化对象。
我怎样才能做到这一点?
答案 0 :(得分:1)
为什么不用引用类(而不是对象)定义字典,然后在引用dicitonary时定义对象?
示例 -
OBJECT_LIBRARY = {'A': A, 'B': B, 'C': C}
然后你会像 -
一样使用它OBJECT_LIBRARY['A']() #Or other classes as needed.
答案 1 :(得分:1)
如果类没有初始化变量,那么
OBJECT_LIBRARY = {'A': A, 'B': B, 'C': C}
OBJECT_LIBRARY['A']()
如果你有初始化变量,那么你可以做这样的事情
OBJECT_LIBRARY = {'A': lambda : A(a, b), 'B': lambda : B(b, c)} # assuming a, b, c are defined
OBJECT_LIBRARY['A']()
答案 2 :(得分:1)
如果使用>>> class A(object):
def __init__(self,entry):
self.entry = entry
def printf(self):
print "A", self.entry
>>> class B(object):
def __init__(self,entry):
self.entry = entry
def printf(self):
print "B", self.entry
>>> object_library = {'A':lambda:A('a'), 'B':lambda:B('b')}
>>> new_and_initialized_A = object_library['A']()
>>> new_and_initialized_A.printf()
A a
,它只是存储对象(而不是创建新对象)。而是存储将创建并初始化对象的函数。像这样:
{{1}}