【发布时间】:2011-02-09 22:33:37
【问题描述】:
我有一个这样的基类:
package MyClass;
use vars qw/$ME list of vars/;
use Exporter;
@ISA = qw/Exporter/;
@EXPORT_OK = qw/ many variables & functions/;
%EXPORT_TAGS = (all => \@EXPORT_OK );
sub my_method {
}
sub other_methods etc {
}
--- more code---
我想继承MyClass,但只针对一种方法。
package MySubclass;
use MyClass;
use vars qw/@ISA/;
@ISA = 'MyClass';
sub my_method {
--- new method
}
我想调用这个MySubclass,就像我调用原来的MyClass一样,并且仍然可以访问Exporter中的所有变量和函数。但是,我在从原始类MyClass 中获取Exporter 变量以正确导出时遇到问题。我需要在子类中再次运行Exporter 吗?这似乎是多余且不清楚的。
示例文件:
#!/usr/bin/perl
use MySubclass qw/$ME/;
-- rest of code
但是当我尝试导入 $ME 变量时出现编译错误。有什么建议吗?
【问题讨论】:
-
始终包含您收到的错误消息。
-
好吧,在这种特殊情况下,当我尝试使用“使用 MySubclass qw/$ME/;”时,我会遇到内部服务器错误即使它在 eval 中:“eval { use MySubclass qw/$ME/; };”,但是如果我只是说“eval { use MySubclass; };”一切都找到了,花花公子
-
类数据 + 继承 = 专业的秘诀,未来的主要故障。
-
向我们显示错误消息。服务器的错误日志中有什么?你知道,我们不是通灵者。
-
基本上我没有在 MYSubclass 中使用 Exporter,因此当我添加 $ME 时它无法找到它。我希望我能够自动执行此操作,但我现在明白我需要导入所有变量,然后在我的子类中再次将它们重新导出。
标签: perl class inheritance subclass exporter