6

How can I set an object property given its name in a string? I have a dictionary being passed to me and I wish to transfer its values into namesake properties using code like this:

for entry in src_dict:
      if entry.startswith('can_'):
          tgt_obj[entry] = src_dict_profile[entry]
jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
dave
  • 1,567
  • 2
  • 21
  • 34

3 Answers3

24
setattr(some_object, 'some_attribute', 42)
vidstige
  • 12,492
  • 9
  • 66
  • 110
Deniz Dogan
  • 25,711
  • 35
  • 110
  • 162
7

Sounds like you're looking for setattr.

Example:

for entry in src_dict:
      if entry.startswith('can_'):
          setattr(tgt_obj, entry, src_dict_profile[entry])
Hank Gay
  • 70,339
  • 36
  • 160
  • 222
1

On objects that have "dict" property

if "__dict__" in dir(obj):

you may do fun things like:

obj.__dict__.update(src_dict)
ddotsenko
  • 4,926
  • 25
  • 24