我正在
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 ; }