遇到python对象名和输入字符串问题

时间:2017-07-09 11:36:28

标签: python class

我遇到了python类和字符串的问题我想使用raw_input给出的字符串来命名一个类对象即使现在我也不会这样做。这就是我试图做到的但是代码没有用。我搜索了stackoverflow.com上的很多帖子,但没有一个被回答;我是Python的新手,我知道类和实例是如何工作的,但我不知道任何帮助我解决这个问题的函数。

class example:
    def _init_(self ,name):
        self.name=name
        input1 = raw_input("")

input1 = example()

1 个答案:

答案 0 :(得分:1)

我不建议您这样做,但有一种方法是使用exec()

class Example:
    pass

name = raw_input("Enter name: ")
exec('{} = Example()'.format(name))

假设用户输入了" abcd"在提示符下,类Example的实例将绑定到名为" abcd"的变量:

>>> abcd
<__main__.Example instance at 0x7f841fb45908>

很少有任何真正的理由这样做,我不推荐这种方法,因为exec()可以执行任意用户输入,从而产生严重的安全问题。

另一种方法是更新globals()字典:

name = raw_input("Enter name: ")
globals()[name] = Example()

但这可能不是最好的事情,并且通常有一种更好的方式取决于你想要达到的目标。

更安全的方法是使用一个字典,用户的输入作为关键词:

user_vars = {}
name = raw_input("Enter name: ")
user_vars[name] = Example()

>>> user_vars['abcd']
<__main__.Example instance at 0x7f841fb45908>