1

假设我有以下包层次结构:

A--> B --> C --> D

这意味着A是基类并B从它C继承,然后从 B 继承,依此类推。

另外,假设我有以下代码行:

my $co = D->new();

有什么方法可以检查(某种UNIVERSAL方法?)对象co是否是 的后代A?(或者一般来说,测试一个对象X是否是 package 的后代P

4

2 回答 2

5

通用

if ($D->isa('A')) {print "do something fancy"}

或者

if ($D->can('method_defined_in_A')) {print "can do that";}
于 2012-06-15T16:57:38.350 回答
0

我相信你可以使用

$co->isa($package_name);

它是所有 perl 祝福引用都有的通用方法。 http://perldoc.perl.org/UNIVERSAL.html

于 2012-06-15T17:01:59.387 回答