У меня есть класс с атрибутами из нескольких списков (сегодня 8, но он наверняка будет расти, потому что мой код опирается на предыдущий код, который использовался в prod в другом проекте)
В этом классе есть функция __str__
для красивой печати информации списка. Сегодня функция отображает информацию о каждом списке, но вызывает их именно, а мне это не нравится, потому что каждый раз, когда меняются атрибуты класса (добавление / удаление списка), мне приходится обновлять этот метод
Я ищу способ динамически перебирать атрибуты моего класса для отображения информации
В качестве примера давайте представим класс ниже
class shopping_cart:
def __init__(self):
self.fruits = []
self.vegetables = []
self.meat = []
self.bread = []
def __str__(self):
msg = ""
msg += "shopping cart content\n"
msg += "---------------------\n"
msg += "---fruits-----------: " + len(self.fruits) +"\n
msg += "---vegetables-------: " + len(self.vegetables) +"\n
msg += "---meat-------------: " + len(self.meat) +"\n
msg += "---bread------------: " + len(self.bread) +"\n
return msg
Как видите, стоимость обслуживания высока. Я ищу что-то более динамичное, что будет больше похоже на
class shopping_cart:
def __init__(self):
self.fruits = []
self.vegetables = []
self.meat = []
self.bread = []
def __str__(self):
msg = ""
msg += "shopping cart content\n"
msg += "---------------------\n"
for item in <list of my class attributes>:
msg += "---" + item +"-----------: " + len(item) +"\n
return msg
Легко читается и прост в обслуживании.