如何使用Class :: Std设置我的基类的必需属性?

时间:2015-06-01 19:55:30

标签: perl oop

我正在使用不同操作系统的多个不同版本的Perl(全部5.8+)。我无法在各种机器上管理模块,这导致我使用Class :: Std和基础编译指示的组合来促进OO Perl和继承。

我想在构造子类对象时设置我的基类的必需属性。另外,我想这样做而不明确指定发送到我的子类的参数中的值,因为它对于给定子类的所有对象都是相同的。

以下代码(后面跟一个问题)说明了这种情况:

我的基类:

package Person;

use Class::Std;

# class data
my %person_title                :ATTR( name => "title"      );
my %person_name                 :ATTR( name => "name"       );
1;

我的子类:

package Doctor;

use Class::Std;

# set inheritance
use base 'Person';

# class data
my %doctor_specialty            :ATTR( name => "specialty"      );
1;

我的脚本(目前失败,“人员缺少初始化标签:'标题'”):

use strict; 
use warnings;
use Doctor;

my %args = (
    "name"      => "John Smith",
    "specialty" => "Dentist",
);

Doctor->new(\%args);

当我创建Doctor对象时,我总是希望'title'是'Dr.'。如何实现这一目标?

0 个答案:

没有答案