简体   繁体   中英

setting fields by name on a class that have __slots__

i have a python class that is defined using __slots__ , like so:

class TheClass:
   __slots__=['foo','bar']

I would like to sets it values by name, like so

the_object=TheClass()
for x in ['foo','bar']: 
  the_object[x]=x+x

is that possible?

No difference with general case, you can use getattr and setattr :

the_object=TheClass()
for attname in ['foo','bar']: 
    setattr(the_object, attname, attname+attname)

You'll get:

>>> the_object.foo
'foofoo'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM