加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:32:01 所属栏目:大数据 来源:网络整理
导读:我正在 HTML::Element 之上编写一个hOCR :: Element包来处理 hOCR内容.因此,来自hOCR :: Element类的对象继承属于HTML :: Element的所有方法. 但是由于HTML :: Element(例如find_by_tag_name和look_down)中存在许多返回HTML :: Element对象的基本方法,我发现
我正在 HTML::Element之上编写一个hOCR :: Element包来处理 hOCR内容.因此,来自hOCR :: Element类的对象继承属于HTML :: Element的所有方法.

但是由于HTML :: Element(例如find_by_tag_name和look_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;

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读