让我们定义类和我们类的三个实例
class Fruit():
def __init__(self, name, color):
self.name = name
self.color = color
apple = Fruit('apple', 'red')
plum = Fruit('plum ', 'blue')
apricot = Fruit('apricot', 'orange')
现在用户输入水果名称
user_input_fruit = sys.stdin.read() # user typing 'plum'
此时我的字符串变量值为'plum'。 现在我想得到与用户输入相关的对象,比如
favorit_fruit = user_input_fruit
这样它就变成了
>>>print type(favorit_fruit)
<type 'instance'>
>>>print favorit_fruit.name
plum
我怎么能这样做?
解决方案
class Fruit():
_dic = {}
def __init__(self, name, color):
self._dic[name] = self
self.name = name
self.color = color
apple = Fruit('apple', 'red')
plum = Fruit('plum', 'blue')
apricot = Fruit('apricot', 'orange')
fruit_string = 'plum'
favorit_fruit = Fruit._dic[fruit_string]
>>>print type(favorit_fruit)
<type 'instance'>
>>>print favorit_fruit.name
plum
答案 0 :(得分:2)
一种方法是维护创建的对象字典。像这样:
obj_dict = {}
apple = Fruit('apple', 'red')
obj_dict['apple'] = apple
plum = Fruit('plum ', 'blue')
obj_dict['plum'] = plum
apricot = Fruit('apricot', 'orange')
obj_dict['apricot'] = apricot
然后当您获得用户输入时,您引用dict并获取对象。
>>>print type(obj_dict[favorit_fruit])
<type 'instance'>
>>>print obj_dict[favorit_fruit].name
plum
答案 1 :(得分:1)
如果&#39;水果&#39;对象是全局的,您可以通过
访问它global()[favorit_fruit].name
如果&#39;水果&#39;是另一个对象的一部分,你只需使用它的命名空间
fruitBowl[favorit_fruit].name
假设:
fruitBowl.plum = Fruit('plum', 'blue')