How to dynamically access class properties in Python?

后端 未结 3 557
广开言路
广开言路 2020-12-03 09:44

Let\'s say I create an instance of a class and want to assign some values to its public properties. Usually, this would be done like this:

class MyClass:
            


        
3条回答
  •  情书的邮戳
    2020-12-03 10:13

    Using dir with setattr should do the job

    class MyClass:
      def __init__(self):
        self.name = None
        self.text = None
    
    myclass = MyClass()
    myclass.name = 'My name'
    
    for prop in dir(myclass):
        print '%s:%s'%(prop,getattr(myclass,prop))
    
    print
    
    for prop in dir(myclass):
        if prop[:2]!='__' and prop[-2:]!='__':
            print prop[-2:]
            setattr(myclass,prop,"Foo Bar")
    
    for prop in dir(myclass):
        print '%s:%s'%(prop,getattr(myclass,prop))    
    

    But be careful because this code also sets '__doc__', '__init__', '__module__' properties to "Foo Bar". So you will have to take care of avoiding certain things given to you by dir (especially those which start and end with __ double underscores).

提交回复
热议问题