gpt4 book ai didi

python - 在 Python 中动态创建多个类

转载 作者:行者123 更新时间:2023-11-28 19:26:00 26 4
gpt4 key购买 nike

我将不胜感激任何澄清以下内容的努力:在 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"

目标非常简单:创建多个类的对象,最好使用存储在表中的属性,但同时为每个客户端都有类声明,这些客户端将实现特定的方法,从类到类(class)。运行良好并使用工厂方法的 Python 版本的初始脚本是不够的,因为它一次只能处理一个类(客户端)(基于命令行参数,即客户端 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com