我将感谢您为澄清以下内容所做的任何努力:Python中是否有一种方法可以动态地为每个类创建一个对象,其中声明了几个类?我愚蠢的猜测可以描述如下:
...
假设我们有一些来自数据库的数据
props = dict_cur.fetchall()
classes_names = []
data = []
for i in props:
classes_names.append(i['client_name'].title())
classes = []
data = []
for i in props:
data.append(dict(i))
for i, d in zip(classes_names, data):
classes.append(type(i, (object,), dict(**d)))
print classes
#printing list of classes
objects = []
for obj in classes:
objects.append(obj())
for obj in objects:
print obj.client_name, obj.client_id
这是一种非常幼稚的方法,它从不允许以常规方式从创建的类继承,就像这样:
class ClientProcess(Someclient): #Someclient is the name of the created class before
def __init__(self):
print "Someclient stuff"
目标非常简单:创建多个类的对象,最好使用存储在表中的属性,但同时为每个客户机都有类声明,这些客户机将实现特定的方法,这些方法将从一个类到另一个类。使用Python版本的Factory方法运行良好的初始脚本是不够的,因为它一次只能处理一个类(客户机)(基于命令行参数,即客户机id)。
最佳答案
如果我理解正确,可以使用以下方法对动态创建的类进行子类划分:
In : classes = []
In : cls_name = 'BaseCls1'
In : classes.append(type(cls_name, (object, ), {'x': 1}))
In : classes[0].x
Out: 1
In : classes[0].__bases__
Out: (object,)
# two ways to create subclass out of BaseCls1
In : class SubCls1(classes[0]):
: x = 2
:
In : SubCls1.x
Out: 2
In : SubCls1.__bases__
Out: (__main__.BaseCls1,)
In : SubCls2 = type('SubCls2', (classes[0],), {'x': 2})
In : SubCls2.x
Out: 2
In : SubCls2.__bases__
Out: (__main__.BaseCls1,)
关于python - 在Python中动态创建多个类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13059401/