Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在给定字符串的情况下传递Python类属性_Python_Class_Attributes - Fatal编程技术网

在给定字符串的情况下传递Python类属性

在给定字符串的情况下传递Python类属性,python,class,attributes,Python,Class,Attributes,这是一节课 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)

这是一节课

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

也许这看起来没必要,因为我简化了场景。我必须以这种方式编码

您可以在
设置值
功能中使用控制流:

def set_value(self, member, value):
    if member == "a":
        self.a = value
    elif member == "b":
        self.b = value
setattr(myobject, "a", value)
如果您不介意删除
set\u value
功能,您可以使用该功能:

def set_value(self, member, value):
    if member == "a":
        self.a = value
    elif member == "b":
        self.b = value
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

您可以在
set\u value
功能中使用控制流:

def set_value(self, member, value):
    if member == "a":
        self.a = value
    elif member == "b":
        self.b = value
setattr(myobject, "a", value)
如果您不介意删除
set\u value
功能,您可以使用该功能:

def set_value(self, member, value):
    if member == "a":
        self.a = value
    elif member == "b":
        self.b = value
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

看看
getattr
setattr
什么不只是使用
rlt.a=3
?看看
getattr
setattr
什么不只是使用
rlt.a=3
?在最后一步中你对
成员做了什么?嗨,阿莱斯塔尼斯,这真是经典的解释。但是,对不起,我说得不够清楚。你能检查一下更新的问题吗?谢谢你在最后一步对
成员做了什么?嗨,阿莱斯塔尼斯,这真是经典的解释。对不起,我说得不够清楚。你能检查一下更新的问题吗?谢谢