\nclass foo:\n bar = 'blah'\n baz = 0\n\n def __init__(self):\n self.bar = ''\n self.baz = 5\n\n>>> foo.bar\n'blah'\n>>> foo().bar\n''\n>>> foo().baz\n5\n>>> foo.baz\n0\n
That is, by specifying the "variables" in the classdef, they become members of the class itself. However, when you instantiate foo, the __init__ "constructor" will rebind those values for the object which "self" refers to, without changing the class member values. If we took those 2 lines out of __init__, then lookups of "bar" and "baz" would return the class values.
Which is neither here nor there in answering your question... ;)