Python 3.x 从字符串命名变量
也许我要求的太多了,但是,是否有可能从另一个字符串变量创建一个变量来实例化名为的类 大概是这样的:Python 3.x 从字符串命名变量,python-3.x,variables,Python 3.x,Variables,也许我要求的太多了,但是,是否有可能从另一个字符串变量创建一个变量来实例化名为的类 大概是这样的: name = 'my_class_instance' # string variable holding name my_class_instance = my_cool_class(arg1, arg2, arg3) #instance of a class in variable with name from string 比尔, 伊维卡首先,我不得不说这是非常非常危险的,不建议这样
name = 'my_class_instance' # string variable holding name
my_class_instance = my_cool_class(arg1, arg2, arg3) #instance of a class in variable with name from string
比尔,
伊维卡首先,我不得不说这是非常非常危险的,不建议这样做 但您可以使用
exec
函数来执行
我已经为您编写了一个具有代表性的代码
代码:
name = "my_class_instance"
class MyCoolClass(object):
def __init__(self, arg1, arg2, arg3):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
def print_args(self):
print(self.arg1)
print(self.arg2)
print(self.arg3)
exec(
"{var_name} = MyCoolClass({arg1}, {arg2}, {arg3})".format(
var_name=name, arg1="'test_1'", arg2="'test_2'", arg3="'test_3'"
)
)
my_class_instance.print_args()
>>> python3 test.py
test_1
test_2
test_3
输出:
name = "my_class_instance"
class MyCoolClass(object):
def __init__(self, arg1, arg2, arg3):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
def print_args(self):
print(self.arg1)
print(self.arg2)
print(self.arg3)
exec(
"{var_name} = MyCoolClass({arg1}, {arg2}, {arg3})".format(
var_name=name, arg1="'test_1'", arg2="'test_2'", arg3="'test_3'"
)
)
my_class_instance.print_args()
>>> python3 test.py
test_1
test_2
test_3
可能的对但除非你有很好的理由这么做,否则这是个坏主意。在大多数情况下,如果有人认为他们需要动态命名的变量,那么最好使用正确的数据类型,例如字典。