def all_members(aClass):
members = {}
bases = list(aClass.__bases__)
bases.reverse()
for base in bases:
members.update(all_members(base))
members.update(vars(aClass))
return members
class Eggs:
eggs = 'eggs'
spam = None
class Spam:
spam = 'spam'
class Breakfast(Spam, Eggs):
eggs = 'scrambled'
print all_members(Eggs)
print all_members(Spam)
print all_members(Breakfast)
# Output:
# {'spam': None, '__doc__': None, 'eggs': 'eggs', '__module__': '__main__'}
# {'spam': 'spam', '__doc__': None, '__module__': '__main__'}
# {'__doc__': None, 'eggs': 'scrambled', 'spam': 'spam', '__module__': '__main__'}