我怎样才能使python不认为eval函数是一个方法

时间:2014-12-10 04:29:50

标签: python eval

我想知道如何能够做到这种一般性的事情

Import Module

Class MyObject:
    def __init__(self,string):  
        self.variable=Module.eval(string).method

基本上我正在尝试编写一个可以将字符串作为输入的函数,但将其视为变量,方法,类,函数等。

编辑:我不想要的是getattr功能。只返回属性的值,我需要它返回一个指向属性本身的指针,以便我可以编辑它。我想要的更好的代码示例就像这样

Import Module

Class MyObject:
    def __init__(self,string):  
        self.eval(string)=Module.eval(string).method

1 个答案:

答案 0 :(得分:2)

我想你只想要getattr功能。

self.variable = getattr(Module, string).method

getattrstring返回Module命名的属性。这是一个具体的例子:

import math
# Both expressions return the same object
s1 = math.sqrt
s2 = getattr(math, 'sqrt')
assert s1 is s2

要处理示例中的作业,请使用setattr

setattr(self, string, getattr(Module, string).method)

一个具体的例子:

class A(object):
   pass

A.x = 5
setattr(A, 'x', 3)
assert A.x == 3