0

给定两个类名,className1并且className2,我如何检查其遗产中是否className1有任何地方?className2

4

1 回答 1

4

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

但是,Tcl 中 OO 编程的一般原则倾向于表明,如果可以,您应该使用鸭子类型:不要担心对象是否属于正确的类,担心它是否可以响应您要发送的消息到它(即,您要调用的方法)。由于任何对象都可以捕获调用未知方法调用的尝试,因此您无法真正通过自省找出它实际上会做什么,而只能尝试一下。如果幸运的话,或者查找一些文档。

于 2012-01-08T23:03:57.953 回答