我想知道如何能够做到这种一般性的事情
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
答案 0 :(得分:2)
我想你只想要getattr
功能。
self.variable = getattr(Module, string).method
getattr
从string
返回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