Piszę pakiet hOCR::Element
na HTML::Element
, aby obsłużyć zawartość hOCR. W związku z tym obiekt z klasy hOCR::Element
dziedziczy wszystkie metody należące do HTML::Element
.Jak uczynić wszystkie odziedziczone metody obiektami podklasy?
Ale istnieje szereg istotnych metod z HTML::Element
(takich jak find_by_tag_name
i look_down
), które zwracają HTML::Element
obiektów, widzę siebie konieczności pisania dla każdego takiego sposobu odpowiedniego sposobu hOCR::Element
otoki, które po prostu mapuje przez błogosławieństwo jako hOCR
co jest podany jako HTML
.
Na przykład:
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;
Jak mam podklasa dziedziczy wszystkie metody z klasy bazowej w taki sposób, że te odpowiednie metody powrotu podklasa obiektów zamiast obiektów klasy bazowej, bez konieczności pisania otoki dla każdej takiej metody macierzystej?
Można rozważyć napisanie [ 'AUTLOAD'] (http://perldoc.perl.org/perlsub.html#Autoloading) podprogram zamiast dziedziczenie z' HTML :: Element', ale to trochę brzydki – Borodin
Dzięki. Czy byłoby to po prostu brzydkie, czy może wpędziłoby mnie to w poważne kłopoty? –
Nie widzę żadnych zagrożeń. – Borodin