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 ; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |