Dav*_*ens 17 python oop perl moose
我原来的问题太模糊了,"因为没有建设性而被封闭".因此,我将修改问题,以便迎合已经发布的答案.:-)
我对Perl的Moose OO框架Moose和Python的股票OO框架之间的差异感兴趣.作为第一个比较点,创建一个包含几个属性和一些方法的简单类是多么容易?
现在,如果重新打开这个问题,我还想知道:如果我决定将属性设置为"只读",将来重构代码有多容易?换句话说,我需要采取哪些步骤来将属性从可读写更改为只读?(我知道,更改API是不好的,但我们假设我正在内部工作,并在实现过程中意识到属性确实应该是只读的.)
Tod*_*ner 11
从使用过两者之后,Moose的强大优势在于它的简洁性.比较经典perl OO:
package Person;
use strict;
use warnings;
sub new {
my $self = {};
my $class = ref($proto) || $proto;
$self->{FIRST_NAME} = undef;
$self->{LAST_NAME} = undef;
bless ($self, $class);
return $self;
}
sub first_name {
my $self = shift;
if (@_) { $self->{FIRST_NAME} = shift }
return $self->{FIRST_NAME};
}
sub last_name {
my $self = shift;
if (@_) { $self->{LAST_NAME} = shift }
return $self->{LAST_NAME};
}
1;
Run Code Online (Sandbox Code Playgroud)
与穆斯:
package Person;
use Moose;
use namespace::autoclean;
has 'first_name' => (is => 'rw', isa => 'Str',);
has 'last_name' => (is => 'rw', isa => 'Str',);
__PACKAGE__->meta->make_immutable;
1;
Run Code Online (Sandbox Code Playgroud)
而且我已经卖得很多,但是Moose才刚刚起步.我认为我的下一个最喜欢的功能是类型,它可以真正简化大型代码库上的程序,并阻止一系列令人讨厌的错误.例如,它可以很好地处理我前几天被咬过的一个(实际上是编码Python),其中对象的某个属性在某些情况下是Date,但是在其他实例中是一个表示日期的字符串.
没有听说过python的任何替代OO系统.
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |