This is annoying:
class MyClass:
@staticmethod
def foo():
print \"hi\"
@staticmethod
def bar():
MyClass.foo()
There is no way to use foo and get what you want. There is no implicit class scope, so foo is either a local or a global, neither of which you want.
You might find classmethods more useful:
class MyClass:
@classmethod
def foo(cls):
print "hi"
@classmethod
def bar(cls):
cls.foo()
This way, at least you don't have to repeat the name of the class.