2015-09-02 91 views
0

我想动态地构建类属性。从字典动态构建类属性

# Code 
label = Label(); 
label.port = 'JTAG'; ##works 

# Attribute name in a variable 
field_name = 'port'; 
label.field_name = 'port'; ## do not work. 

# Foreign key mapping.  
label.foreign_key.port_name = 'port'; ## should work for foreign_key 

我不想在这里使用setattr因为我将外键对象映射到这个对象。其中setattr因外键失败。

最后,我想在动态构建类对象属性时插入'field_name'变量。请让我知道该方法,而不使用setattr

+2

是'标签()'一类,你自己定义或给定某些模块的类?作为一个起点,你可以看看''kwargs'结合'class .__ init __()',另外还有继承,以便给给定的类增加更多的属性。 – albert

+0

这个问题很不明确,因此我标记了它。 – taesu

回答

0

下面会做的伎俩:

label.__dict__[field_name] = 'port' 

自定义类实例的所有属性内部存储为一个字典作为obj.__dict__

+0

如果这是一个外键,它将无法工作。 – SUBBA

+0

__dict__不起作用。 – SUBBA

+0

from dictionary key我想在不使用setattr和__dict__的情况下在pyhtho中检索属性值。在这里,我认为字典密钥必须先插入才能将其添加为类属性。为什么我不想在这里使用setattr是我可以做更新,如果它是一个外键。 – SUBBA