如何在类中动态创建类? 正如我在下面尝试的那样,我得到一个 NameError: name 'Foo is not defined. 我是 Python 的新手,如果很明显,请原谅我。
class Parent(object):
name2class = {'foo' : Foo, 'bar' : Bar }
def do(self,string):
return name2class[string]()
class Foo(Parent):
pass
class Bar(Parent):
pass
if __name__ == '__main__':
parent = Parent()
instance = parent.do()
最佳答案
当你写这个的时候,你需要在 Parent
上面定义 Foo
和 Bar
因为 Parent
引用其他类。
编辑:您只需要将那些类引用移动到方法中:
class Parent(object):
def do(self,string):
name2class = {'foo' : Foo, 'bar' : Bar }
return name2class[string]()
class Foo(Parent):
pass
class Bar(Parent):
pass
if __name__ == '__main__':
parent = Parent()
instance = parent.do('foo')
Edit2:这是你的出厂版本:
class Parent(object):
# Add shared methods here
pass
class Foo(Parent):
# Add unique methods
pass
class Bar(Parent):
# Add unique methods
pass
class ParentFactory(object):
def __init__(self):
self.name2class = {'foo' : Foo, 'bar' : Bar}
def create(self, string):
return self.name2class[string]()
if __name__ == '__main__':
factory = ParentFactory()
instance = factory.create('foo')
关于python - python中具有继承的动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19422030/