getting a dictionary of class variables and values

Plaix picture Plaix · Jan 24, 2014 · Viewed 22.4k times · Source

I am working on a method to return all the class variables as keys and values as values of a dictionary , for instance i have:

first.py

class A:
    a = 3
    b = 5
    c = 6

Then in the second.py i should be able to call maybe a method or something that will return a dictionary like this

import first

dict = first.return_class_variables()
dict

then dict will be something like this:

{'a' : 3, 'b' : 5, 'c' : 6}

This is just a scenario to explain the idea, of course i don't expect it to be that easy, but i will love if there are ideas on how to handle this problem just like dict can be used to set a class variables values by passing to it a dictionary with the variable, value combination as key, value.

Answer

afkfurion picture afkfurion · Jan 24, 2014

You need to filter out functions and built-in class attributes.

>>> class A:
...     a = 3
...     b = 5
...     c = 6
... 
>>> {key:value for key, value in A.__dict__.items() if not key.startswith('__') and not callable(key)}
{'a': 3, 'c': 6, 'b': 5}