Perl:oo with use parent - 检查class是否有父级

时间:2015-08-16 13:59:10

标签: perl

我有一些Perl对象,这些对象是不久前用Moose构建的, 但是,有了保佑,继承是使用“父母”来实现的。附注

现在我想知道是否有办法检查某个班级是否使用过“父母”。或不。

e.g。如果我有两个班级

package Animal;
sub new { 
   my $class = shift;
   return bless {}, $class;
}
1;

package Cat;
use parent 'Animal';

sub new { 
   my $class = shift;
   return bless {}, $class;
}
1;

我可以做一些检查,以确定“猫”和“猫”。类 有一个父母(不关心哪个,但不是自己),而动物没有,给出一个$ foo哪一个?

1 个答案:

答案 0 :(得分:1)

我无法想象为什么你想知道这一点,但可以使用以下内容:

use mro;
my $inherits = @{ mro::get_linear_isa($class) } > 1;

my $isa = do { no strict 'refs'; \@{ $class . '::ISA' } };
my $inherits = @$isa;

注意:

  1. 所有类都继承自UNIVERSAL,但除非一个类明确声明它继承自它,否则它会被忽略。
  2. 这些方法并不关心如何声明继承(use parent或其他方法)。