Я знаю о свойствах в python и о том, как они позволяют использовать атрибут классов так же, как и раньше, но с некоторой возможной модификацией между ними.Свойства Python vs Комбинированный метод Set/Get
Во всяком случае, проделав некоторые Perl недавно я полюбил идею иметь даже меньше кода и с геттер и сеттер комбинированных
как:
sub filename {
my $self = shift;
my $filename = shift;
if ($filename){ $self->$filename = $filename;}
else {return $self->$filename;}
}
Очевидно, что в Perl можно опустить() позади метода, который делает этот подход «более чистым» и более прозрачным для пользователей моего класса.
В пй я мог бы сделать подобный единственный недостаток заключается в необходимости для() при обращении:
def filename(self, setter=None):
if setter is not None:
self._filename = setter
else:
return self._filename
Для меня это просто способ более компактно, то делает свойство вещи, и я полагаю, что мой код более читаемым ,
Так или нет, что-то не так с моим подходом или по какой-то причине это унииоматично?
Спасибо!
delnan, я получаю вашу точку зрения, и вы в порядке. Я вижу проблему с идентификацией. Я лично считаю, что иметь больше методов = больше линии = больше раздуваться и менее кратким. И когда у вас есть класс с 10 свойствами, мне становится сложнее сохранить обзор. Но, возможно, это только я. :-) Спасибо за ваше мнение! – AlessandroEmm
Признание @delnan тоже мое (+1).Части python сочетаются во многих крутых путях. Если вы изобретаете свои собственные «части» или идиомы, вы теряете будущие функциональные возможности (например, сортировка итерирующих или увеличивающихся свойств) –
@PhilCooper Вы правы, и я хорошо знаю, что я бы пошел унииоматическим способом, мне просто интересно что люди думают об этих подходах. Насколько я знаю, не слишком много жалоб на perl/scala, насколько я вижу. – AlessandroEmm