私はPythonのプロパティと、以前と同じようにクラス属性を使用できるようにする方法を知っていますが、その間にいくつかの変更が可能です。
とにかく、最近いくつかの perl をやったので、コードをさらに少なくしてゲッターとセッターを組み合わせるというアイデアが好きになりました
お気に入り:
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
私にとって、これはプロパティのことを行うよりもはるかにコンパクトであり、私のコードはより読みやすいと思います。
それで、私のアプローチに何か問題がありますか、それとも何らかの理由で一義的ですか?
ありがとう!