A class is more or less a fancy wrapper for a dict
of attributes to objects. When you instantiate a class you can assign to its attributes, and those will be stored in foo.__dict__
; likewise, you can look in foo.__dict__
for any attributes you have already written.
This means you can do some neat dynamic things like:
class Employee: pass
def foo(self): pass
Employee.foo = foo
as well as assigning to a particular instance. (EDIT: added self
parameter)