Вопрос, как он был поставлен, кажется мне довольно странным: я не понимаю, почему кто-то хотел бы сделать это. Возможно, вы неправильно понимаете, что такое «метод класса» в Python (он немного отличается от, скажем, статического метода в Java).
Обычный метод более или менее представляет собой просто функцию, которая принимает в качестве первого аргумента (обычно называемый "self") экземпляр класса и которая вызывается как ".".
Метод класса более или менее представляет собой просто функцию, которая принимает в качестве первого аргумента (часто называемый "cls") класс, и который можно вызывать как "." ИЛИ как ".".
Учитывая это и приведенный выше код, что бы вы ожидали, если бы кто-то создал экземпляр bar и вызвал для него meth1?
bar1 = bar()
bar1.meth1("xyz")
Когда вызывается код для meth1, ему передаются два аргумента 'self' и 'val'. Я предполагаю, что вы ожидаете, что «xyz» будет передано для «val», но как вы думаете, что будет передано «для себя»? Должен ли это быть экземпляр bar1 (в этом случае переопределение не требуется)? Или это должна быть строка классов (что тогда будет делать этот код)?