2016-11-01 4 views
0

self.__dict__.update resp. self.__dict__.... является перезапись serial setter функции:динамический вызов объекта недвижимости

class Overwrite: 
    serial_ = None 

    @property 
    def serial(self): 
    print("get serial...") 
    return self.serial_ 

    @serial.setter 
    def serial(self, v): 
    print("set serial...") 
    self.serial_ = v 

    def demo(self): 
    test = {'serial': 'D1D297C1E8839EF2C0E69EF709653C05'} 
    self.__dict__.update(test) 


ow = Overwrite() 
ow.demo() 
print(ow.serial) 

Я хотел бы найти способ, чтобы установить функцию serial setter динамически. Кто-нибудь может мне помочь?

+4

Не уверен, что вы пытаетесь сделать. Почему вы просто не можете сделать 'self.serial = 'D1 ....''? –

+2

Обратите также внимание на то, что как ваш метод '__init__', так и объявление' serial' на уровне класса бессмысленны и должны быть удалены. –

+1

Какую цель? Ваше имущество не работает? Если вы используете Python2, вам нужно убедиться, что вы явно наследовали от 'object' IE' class Overwrite (object): ' – sytech

ответ

2

Вы можете использовать setattr:

for k, v in test.items(): 
    setattr(self, k, v) 
+0

OMG, да конечно ....! Большое спасибо! –

Смежные вопросы