我想接受一个参数并创建一个名称为参数本身的类。 例如,我将“Int”作为参数并创建一个名为“Int”的类, 那是我的课会是这样的。
class Int :
def __init__(self,param) :
self.value = 3
我正在这样做。
def makeClass( x ) :
return eval( 'class %s :\n def __init__(self,param) :\n self.type = 3'%(x,))
然后调用
myClass = makeClass('Int')
myInt = myClass(3)
我收到一个语法错误。请帮忙。
最佳答案
eval
用于计算表达式,class
不是表达式,它是一个语句。也许您想要类似 exec
的东西?
作为旁注,您在这里所做的可能很容易用 type
完成,然后您回避了使用 eval
/exec
的所有性能和安全隐患。
def cls_init(self,param):
self.type = 3
Int = type("Int",(object,),{'__init__':cls_init})
# ^class name
# ^class bases -- inherit from object. It's a good idea :-)
# ^class dictionary. This is where you add methods or class attributes.
关于python - 在 python 中使用 eval 动态创建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243956/