How would I get a list of attributes in a class? For example:
class Test:
def __init__(self,**kw):
for k,v in kw.items():
setattr(self,k,v)
x = Test(value="hello",valueTwo="world")
print(dir(x))
I've done that and it seems to print the keys but, it also prints extra stuff like:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__','value','valueTwo']
is there another way to do this so it just gets the keys/values.
Method 1: To get the list of all the attributes, methods along with some inherited magic methods of a class, we use a built-in called dir() . Method 2: Another way of finding a list of attributes is by using the module inspect .
Python getattr() function. Python getattr() function is used to get the value of an object's attribute and if no attribute of that object is found, default value is returned. Basically, returning the default value is the main reason why you may need to use Python getattr() function.
Use Python's vars() to Print an Object's Attributes The dir() function, as shown above, prints all of the attributes of a Python object.
Use x.__dict__
:
>>> x.__dict__
{'value': 'hello', 'valueTwo': 'world'}
>>> [ v for k,v in x.__dict__.items() if '__' not in k and 'object at' not in k ]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With