Я бы не знал простого способа, тем более что из POV интерпретатора не так уж много различий между методом класса и любой другой переменной (методы имеют дескрипторы, но это все ...).
Поэтому, когда вы хотите, чтобы ученики не вызывали, вы должны немного повозиться:
>>> class cols:
... name = "name"
... @classmethod
... def foo(cls): pass
>>> import inspect
>>> def get_vars(cls):
... return [name for name, obj in cls.__dict__.iteritems()
if not name.startswith("__") and not inspect.isroutine(obj)]
>>> get_vars(cols)
['name']