Увы, [incr Tcl] поддерживает интроспекцию только для объектов, но не для классов; вам придется создать экземпляр className1
, получить его наследие с помощью info heritage $theInstance
и проверить, присутствует ли className2
в этом списке. Беспорядочный. (Начиная с версии 4.0, вы можете использовать info class subclasses className2 className1
, чтобы проверить, является ли className1
прямой подкласс className2
, но это не работает для косвенных подклассов, то есть с некоторыми подклассами между ними.)
Однако общие принципы ОО-программирования в Tcl, как правило, указывают на то, что вы должны использовать утиную типизацию, если можете: не беспокойтесь о том, принадлежит ли объект нужному классу, беспокойтесь о том, может ли он отвечать на сообщения, которые вы хотите отправить на него (т. е. методы, которые вы хотите вызвать). Поскольку любой объект может перехватывать попытки вызвать неизвестные вызовы метода, вы не можете реально выяснить, что он будет делать с помощью самоанализа, и вам просто нужно попробовать. Или поищите документацию, если вам повезет.