如何在[incr Tcl]中检查一个类是否是另一个类的基础?

时间:2012-01-08 10:53:52

标签: oop inheritance tcl incr-tcl

Givetn有两个类名className1className2,如何检查className1遗产中是否有className2

1 个答案:

答案 0 :(得分:4)

唉,[incr Tcl]只支持对象的内省,而不支持类;您必须创建className1的实例,使用info heritage $theInstance获取其遗产,并检查该列表中是否存在className2。乱。 (从4.0开始,您可以使用info class subclasses className2 className1检查className1是否是className2直接子类,但这对间接子类不起作用,即中间有一些子类。)

然而,Tcl中OO编程的一般原则倾向于表明你应该使用duck typing如果你可以:不要担心对象是否是正确的类,担心它是否能响应你的消息想发送给它(即你想要调用的方法)。由于任何对象都可以捕获尝试调用未知方法调用,因此您无法真正找到内省实际执行的操作,并且必须直接尝试它。如果你幸运的话,或者寻找一些文件。