Getting attributes of a python class

In Python, you can get a list of class attributes using various approaches. Class attributes are the attributes that are associated with the class itself rather than with instances of the class. Here are a few ways to achieve this:

Using the vars() function

The vars() function returns the __dict__ attribute of an object. In the case of a class, this attribute contains the class's namespace, which includes its attributes.

class MyClass: class_attr1 = 42 class_attr2 = "Hello" class_attrs = vars(MyClass) print("Class attributes:", class_attrs) # Output: Class attributes: {'__module__': '__main__', 'class_attr1': 42, 'class_attr2': 'Hello', ...}

Using the dir() function

The dir() function returns a list of valid attributes and methods for an object. For a class, this includes class attributes.

class_attrs = dir(MyClass) print("Class attributes:", class_attrs)

Iterating through the class namespace

You can directly iterate through the class's namespace using a loop. This will give you the names of the class attributes.

class MyClass: class_attr1 = 42 class_attr2 = "Hello" class_attrs = [] for attr_name in MyClass.__dict__: if not attr_name.startswith("__"): # Exclude special attributes class_attrs.append(attr_name) print("Class attributes:", class_attrs)

Remember that these methods will also include other attributes that are inherited from parent classes or automatically added by Python, like special methods (__init__, __str__, etc.).

Keep in mind that these approaches provide the attribute names, not the values associated with them. If you need to access the values of these class attributes, you would use them as MyClass.class_attr1, for example.


To obtain a list of class attributes in Python, you can utilize methods such as vars(), dir(), or iterating through the class's namespace using __dict__. These approaches allow you to access the names of class attributes and provide insight into the class's namespace, although they may also include inherited or special attributes.