Лучший способ изменить атрибут в списке объектов? (python) - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу максимально эффективно редактировать несколько экземпляров объекта. Прямо сейчас мой код выглядит следующим образом:

class MyClass:
    def __init__(self, att):
        self.att = att

num_instance = 100
list_instance = [MyClass(some_value[i]) for i in range(num_instance)]

Я хочу как-то отредактировать атрибуты во всех экземплярах списка без использования явного цикла for; что я сейчас и делаю:

for i in range(num_instance):
    list_instance[i].att = some_other_value[i]

Есть ли лучший способ сделать это? Может быть, с использованием другой структуры данных?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете использовать понимание списка. Замените это:

for i in range(num_instance):
    list_instance[i].att = some_other_value[i]

на это:

[list_instance[i].set_att(some_other_value[i]) for i in range(num_instance)]

и добавьте функцию set_att в класс:

class MyClass:
    def __init__(self, att):
        self.att = att

    def set_att(self, att):
        self.att = att

В качестве альтернативы, вы можете просто вызвать init с вводом вместо написания set_att функции, которая делает то же самое.

Понимание списка немного быстрее, чем традиционное for l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...