我想初始化一個基類和一個子類,而不必複製構造函數。這是我的了:Perl:使用基類和子類的公共構造函數
tstbase.pm:
package tstbase;
use Exporter qw(import);
our @EXPORT = qw(&new);
my %config = (
"class" => "tstbase",
);
sub new {
my $class = shift;
my $self;
$self->{"name"} = $config{"class"};
bless ($self, $class);
return $self;
};
1;
tstsubclass.pm:
package tstsubclass;
use tstbase;
my %config = (
"class" => "tstsubclass",
);
1;
tst.pl:
#!/usr/bin/perl
use tstsubclass;
my $baseobj = tstbase->new;
print "Testbase ".$baseobj->{"name"}."\n";
my $subobj = tstsubclass->new;
print "Testsubclass ".$subobj->{"name"}."\n";
tst.pl的outout是
Testbase tstbase
Testsubclass tstbase
但是我正在尋找
Testbase tstbase
Testsubclass tstsubclass
,我是說我複製「亞新{..}」例行到tstsubclass.pm。有沒有辦法避免這種開銷?我嘗試過所有我的%配置/我們的%配置和導出%配置沒有成功的組合。
任何幫助是極大的讚賞
最佳, 馬庫斯
感謝您的快速響應!正如您可能懷疑的那樣,我的目標不是能夠訪問類名,而是對類屬性執行一些複雜的初始化 - 我只是發佈了精簡的示例。原始的類構造函數有80行代碼。我會檢查這種方法是否能解決我的問題。 無論如何,你解決了這個問題,所以大拇指! – Marcus