'how to access the class variable by string in Python?

The codes are like this:

class Test:
    a = 1
    def __init__(self):
        self.b=2

When I make an instance of Test, I can access its instance variable b like this(using the string "b"):

test = Test()
a_string = "b"
print test.__dict__[a_string]

But it doesn't work for a as self.__dict__ doesn't contain a key named a. Then how can I accessa if I only have a string a?

Thanks!



Solution 1:[1]

use getattr this way to do what you want:

test = Test()
a_string = "b"
print getattr(test, a_string)

Solution 2:[2]

Try this:

class Test:    
    a = 1    
    def __init__(self):  
         self.b=2   

test = Test()      
a_string = "b"   
print test.__dict__[a_string]   
print test.__class__.__dict__["a"]

Solution 3:[3]

You can use:

getattr(Test, a_string, default_value)

with a third argument to return some default_value in case a_string is not found on Test class.

Solution 4:[4]

Since the variable is a class variable one can use the below code:-

class Test:
    a = 1
    def __init__(self):
        self.b=2

print Test.__dict__["a"]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Artsiom Rudzenka
Solution 2 Mark
Solution 3 Miquel Santasusana
Solution 4 Ishan Ojha