Accessing it via ClassName rather than via self will be slightly faster, since if you access it via self it must first check the instance namespace.  But I don't expect the difference to be at all significant, unless you have profiling information to suggest that it is.  
So I would recommend using whichever one you think is easier to read/understand as a human.
Semantically, they will be different only if the class_variable_dict variable gets shadowed somewhere -- in particular, if (a) self defines a variable of the same name; or (b) self is an instance of a subclass of ClassName, and that subclass (or one of its bases that's still a subclass of ClassName) defines a variable of the same name.  If neither of those is true, then they should be semantically identical.
Edit:
delnam has a good point: there are factors that might make either faster.  I stand by my assertion that the difference will be trivial unless it's in a very very tight loop.  To test it, I created the tightest loop I could think of, and timed it with timeit.  Here are the results:
- access via class var: 20.226 seconds
- access via inst var: 23.121 seconds
Based on several runs, it looks like the error bars are about 1sec -- i.e., this is a statistically significant difference, but probably not worth worrying about.  Here's my test code:
import timeit
setup='''
class A:
    var = {}
    def f1(self):
        x = A.var
    def f2(self):
        x = self.var
a = A()
'''
print 'access via class var: %.3f' % timeit.timeit('a.f1()', setup=setup, number=100000000)
print 'access via inst var: %.3f' % timeit.timeit('a.f2()', setup=setup, number=100000000)