Как создать универсальную функцию для «производства» массивов объектов?

Хочу создать массив объектов через функцию. Точнее создать функцию, которая будет мне выдавать массивы объектов закидывая в аргумент этой функции название класса
class Test1:
    def __init__(self):
        pass

class Test1_1(Test1):
    def __init__(self):
        Test1.__init__(self)
        pass


def create(size,class_name):
    layer=[]
    for i in range(size):
        layer.append(class_name)
    return layer


lr=create(10,Test1_1())

Я это представлял себе так, но в данном случае я просто получаю ссылки
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Что тут сказать, начинайте с азов ООП, потом с азов Питона!
create(10,Test1_1())
Вы передаёте в функцию create результат вызова класса Test1_1() - т.е. один его экземпляр. Если хотите передать сам класс, скобки нужно опустить:
create(10,Test1_1)
И тогда уже в функции будете делать вызов переданного класса, а точнее, любого вызываемого (callable) объекта-фабрики.
Ответ написан
Комментировать
@prochanev
Или если идти таким путем, какой выбрали вы, то в функции делать copy экземпляра, чтобы это были разные объекты. Но лучше конечно передать класс, а инстансы уже создавать в функции.

А еще бы я заменил i на _, дабы показать, что это просто повторение действия size раз.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы