Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从字符串命名变量_Python 3.x_Variables - Fatal编程技术网

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

可能的对但除非你有很好的理由这么做,否则这是个坏主意。在大多数情况下,如果有人认为他们需要动态命名的变量,那么最好使用正确的数据类型,例如字典。