Don't use staticmethod. At the very least use @classmethod decorator here:
class Foo():
var = "Foo"
@classmethod
def print_var(cls):
print(cls.var)
class Bar(Foo):
var = "Bar"
This makes print_var accessible on the class, but is passed a reference to the current class so you can look up var on the 'right' object.
Use staticmethod only if you want to remove all context from a method, turning it into a regular function again.
Demo:
>>> class Foo():
... var = "Foo"
... @classmethod
... def print_var(cls):
... print(cls.var)
...
>>> class Bar(Foo):
... var = "Bar"
...
>>> Bar.print_var()
Bar
>>> Foo.print_var()
Foo