是否可以使用变量从特定对象调用方法?

时间:2013-11-29 13:48:43

标签: python oop variables

我一直想知道这一点,它似乎是Python 所拥有的东西,但是可以使用与此类似的代码从不同的方法调用相同的方法吗?

这是我用来测试它的类:

class Test():
   def __init__(self,foo):
      self.foo = foo
   def method_a():
      print(self.foo)

这是正在运行的代码:

import classTest
object1 = classTest.Test("Unn")
object2 = classTest.Test("Tss")
runThis = input("Type in either object1 or object2:")
runThis.method_a()

我明白了: AttributeError:'str'对象没有属性'method_a'

我做错了吗?或者Python缺乏该功能吗?

4 个答案:

答案 0 :(得分:6)

将您的对象放在字典中:

objects = {}
objects['object1'] = classTest.Test("Unn")
objects['object2'] = classTest.Test("Tss")
runThis = input("Type in either object1 or object2:")
objects[runThis].method_a()

您还可以使用globals() function访问模块全局变量,它也会为您提供字典,但大部分时间您希望使用专用字典。

答案 1 :(得分:2)

您可以使用globals按名称访问变量:

globals()[runThis].method_a()

答案 2 :(得分:1)

在某些情况下也可能会有所帮助。

import gc
for obj in gc.get_objects():
    if isinstance(obj, Test):
        print obj

答案 3 :(得分:0)

你也可以使用它:

import classTest
object1 = classTest.Test("Unn")
object2 = classTest.Test("Tss")
runThis = eval(raw_input("Type in either object1 or object2:"), globals())
runThis.method_a()