Быстрый способ преобразовать все переменные экземпляра в классе в список (Python)

Начиная с .Net 4.5, наконец, есть простой способ сделать это.

.Net 4.5 вводит новые атрибуты информации о вызывающем абоненте.

private void OnPropertyChanged([CallerMemberName]string caller = null) {
     // make sure only to call this if the value actually changes

     var handler = PropertyChanged;
     if (handler != null) {
        handler(this, new PropertyChangedEventArgs(caller));
     }
}

Это, вероятно, хорошая идея для добавления компаратора к функции.

EqualityComparer.Default.Equals

Здесь приведены примеры здесь и здесь

Также см. Информация о вызывающем абоненте (C # и Visual Basic)

0
задан ruohola 7 March 2019 в 14:56
поделиться

1 ответ

Единственное решение (без полного переосмысления всего вашего проекта - который FWIW мог бы рассмотреть, см. Мои комментарии по вашему вопросу) - это иметь список имен атрибутов (в том порядке, в котором вы хотите, чтобы они были в окончательном списке). ) и используйте getattr

class MonstruousGodClass(object):
    _fields_list = ["name", "title", "value", ] #etc...

    def as_list(self):
        return [getattr(self, fieldname) for fieldname in self._fields_list]

Теперь, поскольку, как я упомянул в комментарии, list НЕ является правильным типом данных (по крайней мере, из семантического POV), вы можете использовать dict вместо этого - что делает код намного проще:

    import copy 

    def as_dict(self):
        # we return a deepcopy to avoid unexpected side-effects
        return copy.deepcopy(self.__dict__) 
0
ответ дан bruno desthuilliers 7 March 2019 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: