'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 |
