给定两个类名,className1
并且className2
,我如何检查其遗产中是否className1
有任何地方?className2
问问题
94 次
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 回答