如何从字符串变量中指定类的特定实例

Ree*_*s K 2 python oop python-3.x

我有一个程序,我需要从一个字符串变量中获取一个类的许多实例之一的信息。

我曾向我的一个程序员朋友寻求帮助,但他专门研究C#而不是python3,因此他能提供的最好方法是尝试使用exec()命令。这并没有真正帮助我。

说我有一些代码来设置有关汽车的信息

class Cars:
    def __init__(self, Brand, Model, Owner):
        self.Brand = Brand
        self.Model = Model
        self.Owner = Owner

Car1 = Cars("Honda", "Civic", "Jon Arbuckle")

Car2 = Cars("Ford", "Focus", "Martha Jones")

MysteryCar = "Car1"
Run Code Online (Sandbox Code Playgroud)

无论如何,是否"Jon Arbuckle"只知道存储在MysteryCar什么地方就可以返回值?

Tom*_*koo 5

使用locals()which指示您将本地范围变量的名称(作为字符串)作为键,并将其值作为.....以及它的值!

print(locals()[MysteryCar].Owner)
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用eval哪种方法将字符串评估为python代码。因此,您可以执行以下操作:

print(locals()[MysteryCar].Owner)
Run Code Online (Sandbox Code Playgroud)

但总的来说eval,我认为这是冒险的,应该避免...

例如,如果您MysteryCar输入的是用户输入的内容,如果用户输入一些危险的命令,则可能导致严重的问题。

另一方面,使用locals可以让用户知道他的选择是否错误try/except KeyError