我将感谢您为澄清以下内容所做的任何努力: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/

10-13 03:25