2012-11-14 69 views
0

这是一类传递一个Python类属性给出一个字符串

Class A: 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

    def set_value(self,"attribut_String",value): # passing a attribute in String 
     if "attribut_String" = "AAAA": 
      self.cal_function("a",value) 
     else "attribut_String" = "BBBB": 
      self.cal_function("b",value) 

    def cal_function(self,att,value): 
     self.att = value  # process the passing string as attribute object 

现在,我尝试这样的结果:

input:rlt = A(a = 1, b = 2) 
input:rlt.a 
output: 1 
input:rlt.set_value("a",3) 
input:rlt.a 
output:4 

五月似乎没有必要,因为我简化了场景。我有这样的代码

+3

看看'getattr'和'setattr' –

+1

不仅仅是用什么'rlt.a = 3'? – alexvassel

回答

3

您可以使用set_value函数内部控制流程:

def set_value(self, member, value): 
    if member == "a": 
     self.a = value 
    elif member == "b": 
     self.b = value 

如果你不介意丢弃set_value功能,您可以使用setattr功能:

setattr(myobject, "a", value) 

甚至

def set_value(self, member, value): 
    setattr(self, member, value) 

您也可以使用字典:

def set_value(self, member, value): 
    members = { 
     "a" : self.a, 
     "b" : self.b 
    } 
    members[member] = value 
+0

你在最后一步用“成员”做什么? – glglgl

+0

嗨,Alestanis,这真的是经典的解释。但对不起,我没有让自己清楚。你能否请检查更新的问题?谢谢 –

相关问题