gpt4 book ai didi

python - 如何在Python中生成运行时类

转载 作者:行者123 更新时间:2023-12-01 01:06:19 29 4
gpt4 key购买 nike

我想生成一组具有相同方法但不同 name 属性的类。例如,

class A:
name = '1'
def f(self):
print('call')

class B
name = '2'
def f(self):
print('call')

class C
name = '3'
def f(self):
print('call')

server.register_handler_class(A)
server.register_handler_class(B)
server.register_handler_class(C)

name 的值从 xx.conf 文件加载。这个怎么做?我需要 metaclass__new__ 吗?

最佳答案

不,您需要类型全局:

new_class_names = ['A', 'B', 'C']

def new_class_init(self):
print(f'{self} was called.')

for class_name in new_class_names:
globals()[class_name] = type(class_name, (), {'__init__': new_class_init}

类型可以是 called with three parameters :namebasesdict 返回一个新类。

name 是新类的名称,bases 是包含其所有基类和 dicttuple一个 dict ,其中键值对表示方法名称和要绑定(bind)为新类应具有的方法的实际函数。

然后,当然,要以编程方式将它们添加到全局命名空间,我们可以通过调用 globals 来引用全局 dict

关于python - 如何在Python中生成运行时类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313643/

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