通过存储在字符串中的名称创建类的对象,是一种使用反射(Reflection)技术的方法。在Python中,可以使用eval()
函数来实现这个功能。
例如,我们有一个名为Person
的类:
class Person:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"Hello, my name is {self.name}.")
我们可以使用eval()
函数来根据字符串中的类名创建对象:
class_name = "Person"
obj = eval(class_name)(name="John")
obj.say_hello() # 输出:Hello, my name is John.
需要注意的是,eval()
函数可能存在安全风险,因此在使用时需要谨慎。在实际开发中,可以使用更安全的方法来实现这个功能,例如使用getattr()
函数:
class_name = "Person"
obj = globals()[class_name](name="John")
obj.say_hello() # 输出:Hello, my name is John.
在这个例子中,我们使用globals()
函数来获取全局命名空间中的类,然后使用类名作为键来获取对应的类,并使用它来创建对象。这种方法相对更安全,因为它只能访问全局命名空间中的类,而不能执行任意代码。
领取专属 10元无门槛券
手把手带您无忧上云