В питоне использует цикл for правильную технику программирования для создания объектов?

1

Хорошо, так что в основном, что я читаю данные из файла, и с этими данными я хочу создать объект для каждой строки.

Так что-то вроде:

bar = [['a','b'],['c','d']]

for foo in bar:
    foo = Class_name(list_of_arguments)

Каким будет лучший способ "распаковать" список? Будет ли это лучше всего сделано в методе инициализации класса или было бы лучше сделать это до создания объекта и передать аргументы в формате non-? Я прошу, потому что в списках содержится информация, относящаяся к объекту, который будет использоваться классом.

Также я хотел бы, чтобы у каждого объекта было уникальное имя, что я должен сделать для этого? Было бы лучше использовать одно из значений в списке?

  • 0
    Что такое foo в цикле for? Что такое list_of_arguments что они должны означать?
  • 0
    что такое list_of_arguments в вашем коде? Кроме того, вы действительно пытаетесь присвоить foo, которая является переменной итерации?
Показать ещё 1 комментарий
Теги:
class
object
list

1 ответ

6
Лучший ответ

Я... думаю, я понимаю ваш вопрос. Я бы подошел к нему так:

class myClass():
  def __init__(self, *args):
    # something here that actually uses the arguments.

data = [['a', 'b'], ['c', 'd']]

objects = [myClass(*vals) for vals in data]

Это должно создать экземпляр myClass для каждого набора значений и вернуть список новых объектов, доступных по индексу.

  • 0
    Спасибо, это именно то, что я искал! Хотя я все еще не уверен на 100%, как это работает.
  • 2
    @ Шелдон - Какие части? Понимание списка стоит прочитать, если синтаксис [x for x in y] отбросит вас. Как только вы обернетесь вокруг них, следующая идея, использованная здесь, заключается в том, что я распаковываю внутренние списки, чтобы передать их конструктору для myClass. Вот где myClass(*vals) . HTH.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню