Perl/OOP:如何在 "Class A" 的构造函数中创建 "Class B" 的对象

Perl/OOP: How to create object of "Class B" in constructor of "Class A"

我有 Class A 和以下构造函数:

sub new {
    my ($class, %args) = @_;

    return bless(\%args, $class);
}

我还有一个 class、LWP::UserAgent,我想用在我的 Class A 中。 我可以通过这样做来解决问题:

ua = LWP::UserAgent->new;

sub new {
    my ($class, %args) = @_;

    return bless(\%args, $class);
}

但在这种情况下,我将有 1 个 UserAgent 对象,但我希望 unique 对象用于 Class A.

的每个实例

然后您需要将该对象构造为属性

use LWP::UserAgent;

sub new {
    my ($class, %args) = @_;

    return bless { %args, lwp => LWP::UserAgent->new }, $class;
}

现在 class A 的每个对象都将具有属性 lwp 自己的 LWP::UserAgent 对象。

我当然希望在现实中写得很好,并进行了所有必要的错误检查。


而且我想最好为用户代理调用属性 ua(而不是上面的 lwp)。