在Python中运行时创建对象
如何在 python 中运行时创建对象实例?
假设我有 2 个类:
class MyClassA(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS A"
def println(self):
print self.name
class MyClassB(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS B"
def println(self):
print self.name
以及一个字典,
{('a': MyClassA), ('b': MyClassB)}
我如何创建两个类之一的动态实例,具体取决于我选择“a”或“b”。
类似这样:
somefunc(str):
if 'a': return new MyClassA
if 'b': return new MyClassB
在调用时获得“CLASS B”: somefunc('a').println
但以更优雅和动态的方式(假设我在运行时向字典添加更多类)
how do i create object-instances on runtime in python?
say i have 2 classes:
class MyClassA(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS A"
def println(self):
print self.name
class MyClassB(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS B"
def println(self):
print self.name
and a dict
{('a': MyClassA), ('b': MyClassB)}
how can i create dynamic an instance of one of my two classes, depending of i choose 'a' or 'b'.
kind of this:
somefunc(str):
if 'a': return new MyClassA
if 'b': return new MyClassB
to get "CLASS B" on calling: somefunc('a').println
but in a more elegant and dynamic way (say i add more classes to the dict on runtime)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以创建一个调度程序,它是一个字典,其中的键映射到类。
You might create a dispatcher, which is a dictionary with your keys mapping to classes.
您可以通过调用类来创建类实例。您的类字典
{('a': MyClassA), ('b': MyClassB)}
返回类;所以你只需要给班级打电话:但我感觉到你想要更具体的东西。这是 dict 的子类,当使用键调用时,它会查找关联的项目并调用它:
You create a class instance by calling the class. Your class dict
{('a': MyClassA), ('b': MyClassB)}
returns classes; so you need only call the class:But I get the sense you want something more specific. Here's a subclass of
dict
that, when called with a key, looks up the associated item and calls it: