Givetn有两个类名className1
和className2
,如何检查className1
遗产中是否有className2
?
答案 0 :(得分:4)
唉,[incr Tcl]只支持对象的内省,而不支持类;您必须创建className1
的实例,使用info heritage $theInstance
获取其遗产,并检查该列表中是否存在className2
。乱。 (从4.0开始,您可以使用info class subclasses className2 className1
检查className1
是否是className2
的直接子类,但这对间接子类不起作用,即中间有一些子类。)
然而,Tcl中OO编程的一般原则倾向于表明你应该使用duck typing如果你可以:不要担心对象是否是正确的类,担心它是否能响应你的消息想发送给它(即你想要调用的方法)。由于任何对象都可以捕获尝试调用未知方法调用,因此您无法真正找到内省实际执行的操作,并且必须直接尝试它。如果你幸运的话,或者寻找一些文件。