gpt4 book ai didi

python - Moose 与 Python 的 OO 系统相比如何?

转载 作者:IT老高 更新时间:2023-10-28 21:13:35 24 4
gpt4 key购买 nike

我最初的问题过于含糊,“因为没有建设性而被关闭”。因此,我将修改这个问题,以迎合已经发布的答案。 :-)

我对 Perl 的 Moose OO 框架之间的区别很感兴趣 Moose和 Python 的股票 OO 框架。作为比较的第一点,创建一个具有几个属性和几个方法的简单类有多容易?

现在,如果这个问题被重新提出,我也想知道:如果我决定将属性设为“只读”,将来重构代码有多容易?换句话说,我必须采取哪些步骤才能将属性从可读可写更改为只读? (我知道,更改 API 很糟糕,但假设我正在内部处理某些事情,并在我的实现过程中意识到属性确实应该是只读的。)

最佳答案

由于两者都使用过,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;

与驼鹿:

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;

我已经卖光了,但 Moose 才刚刚开始。我认为我的下一个最喜欢的功能是 Types ,这可以真正简化大型代码库上的程序并阻止一系列令人讨厌的错误。例如,它可以很好地处理我前几天被咬的一个(实际上是在编写 Python 代码时),其中对象的某个属性在某些情况下是日期,但在其他情况下是表示日期的字符串。

还没有听说过 python 的任何替代 OO 系统。

关于python - Moose 与 Python 的 OO 系统相比如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com