Python:Dictionary:基于提供的键返回一个初始化的类对象变量

时间:2015-09-29 05:49:26

标签: python class dictionary

我是学习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'引用字典时,字典应该返回该类型的初始化对象

我怎样才能做到这一点?

3 个答案:

答案 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}}