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

n.r*_*.r. 5 oop perl inheritance

我正在编写一个hOCR::ElementHTML::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;
Run Code Online (Sandbox Code Playgroud)

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

小智 -2

sub look_down { 
    my $self = shift;
    return bless $self->SUPER::look_down (@_) ,HTML::Element ;
}
Run Code Online (Sandbox Code Playgroud)