Python属性与组合Set / Get方法

我知道python中的属性,以及它们如何像以前一样使用class属性,但是在两者之间进行了一些可能的修改。


无论如何,最近做了一些Perl,我开始喜欢这样的想法:更少的代码,将getter和setter结合起来


喜欢:


sub filename {

   my $self      = shift;

   my $filename  = shift;

   if ($filename){ $self->$filename = $filename;}

   else {return $self->$filename;}

}

显然,在perl中,您可以省略方法后面的(),该方法使该方法“更干净”,并且对我的类用户更透明。


在py中,我可以做类似的事情,唯一的缺点是访问时需要使用():


def filename(self, setter=None):

    if setter is not None:

         self._filename = setter

    else:

         return self._filename

对我来说,这只是比做属性事情更紧凑的方式,而且我相信我的代码更具可读性。


那么,我的方法有什么问题吗?还是出于某种原因它是单一的?


慕婉清6462132
浏览 235回答 2
2回答

GCT1015

python的各个部分以许多很酷的方式组合在一起。如果您发明了自己的“零件”或惯用语,那么您将失去将来的功能(例如,对迭代属性进行排序或递增)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python