Python 如何使用exec()在函数中创建类?

Python 如何使用exec()在函数中创建类?,python,python-3.x,oop,Python,Python 3.x,Oop,我正在创建一个函数,该函数在其中创建一个类并返回 def create_object(**objects): # creates class, NewClass class NewClass: pass for key in objects.keys(): # creating objects in NewClass exec("NewClass.%s = %s" %

我正在创建一个函数,该函数在其中创建一个类并返回

    def create_object(**objects):
        # creates class, NewClass
        class NewClass:
            pass
        for key in objects.keys():
            # creating objects in NewClass
            exec("NewClass.%s = %s" % (key, objects[key]))
        return NewClass
当我们调用这个函数时

new_object = create_object(first_name='Mayank', last_name='Tyagi')
new_object.first_name
object('ClassName', first_name='Mayank', last_name='Tyagi')
ClassName.first_name
这可以很好地工作并提供输出

>>> 'Mayank'
但是我想创建一个函数,它将创建一个具有变量名的类。 乙二醇

调用函数后

new_object = create_object(first_name='Mayank', last_name='Tyagi')
new_object.first_name
object('ClassName', first_name='Mayank', last_name='Tyagi')
ClassName.first_name
它应该给出输出

>>>'Mayank'
怎么做这个


-带着希望寻求帮助:

不要使用exec,除非你绝对必须使用,而你没有

使用类型

输出:
打印m1、m2、m3的姓氏将在实例级别进行赋值时分别打印Foo、Bar和Mayank,而不会更改类。

在第四个代码块的最后一行,它是:exec%s.%s=%s%class\u name,key,objects[key]第二个exec应该是exec%s.%s=%s%class\u name,key,objects[key]。虽然,我并不鼓励这种类型的设计。不要使用exec,使用:cls=typename,object,,objects。这个答案是正确的,但我认为它可以解释为什么要传递uu init_u函数而不是名字和姓氏。
<__main__.Mayank object at 0x1028050b8> {'first': 'Mayank', 'last': 'Tyagi'}
m1 = Mayank()
m2 = Mayank()
m3 = Mayank()

m1.last = "Foo"
m2.last = "Bar"