0

ここにクラスがあります

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

シナリオを単純化したので不要に思えるかもしれません。このようにコーディングする必要があります

4

1 に答える 1

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
于 2012-11-14T09:35:37.997 に答える