如何使所有继承的方法返回子类对象?

时间:2016-01-30 15:46:55

标签: perl oop inheritance

我正在HTML::Element之上编写hOCR::Element个包来处理hOCR内容。因此,hOCR::Element类中的对象继承了属于HTML::Element的所有方法。

但是,由于HTML::Element(例如find_by_tag_namelook_down)中有许多返回HTML::Element个对象的基本方法,我认为自己必须为每个这样的方法是一个相应的hOCR::Element包装器方法,只需将hOCR作为HTML给出的内容进行祝福。

例如:

package hOCR::Element;

use HTML::Element;
use parent 'HTML::Element';

sub new {
  my ($class, %params) = @_;
  my $self = $class->SUPER::new (%params);
  return bless $self, $class;
}

sub look_down { 
  my $self = shift;
  return map { bless $_, 'hOCR::Element' } $self->SUPER::look_down (@_);
}

1;

如何让子类继承其基类中的所有方法,使得这些相关方法返回子类对象而不是基类对象,而不必为每个这样的父方法编写包装器?

1 个答案:

答案 0 :(得分:-2)

sub look_down { 
    my $self = shift;
    return bless $self->SUPER::look_down (@_) ,HTML::Element ;
}
相关问题