@Span4ev

Можно ли создавать экземпляры класса внутри самого класса?

Я создаю n число экземпляров класса и помещаю их в группу. Я могу в отдельном модуле сделать счётчик и

# Функция в модуле
def create_populations(screen, settings, humans):
	for i in range(settings.HUMANS_AMOUNT):
		human = Human(screen, settings) # Создать экземпляр класса
		humans.add(human)               # Добавить его в группу
		human.create_humans()


Но могу ли я ( и тут ещё важно не только можно или нет, а насколько это правильно с точки зрения логики и поддержки кода) этот счётчик перенести в метод самого класса и создавать n число экземпляров класса внутри самого класса и там же помещать их в группу, а функцию вызова этого метода класса, вызывать один раз в модуле?

#функция в модуле
def create_populations(screen, settings, humans):
	human = Human(screen, settings) # 1 раз создаю экземпляр, чтобы обратиться к его методу
	human.create_humans(humans) # передаю методу - Group()

# метод класса
def create_humans(self, humans):
	for i in range(settings.HUMANS_AMOUNT)
		human = Human(self.screen, self.settings) # создаю экземпляры самого себя внутри себя
		humans.add(human) #добавляю их в группу


Глупо это или нормальна практика? Я создаю экземпляры класса внутри метода этого же класса. Есть ли недостатки и преимущества? Или это полный бред и так нельзя делать?
  • Вопрос задан
  • 442 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Это вопрос сцепления классов.
Если ты внесешь это в метод класса, то теперь класс должен знать о коллекции humans, и, что ещё хуже, об информации в объекте settings. Нужно ли ему это знание для выполнения своих основных обязанностей? Если нет, делать эту операцию методом класса не имеет особого смысла.
И я бы сказал, это слишком тривиально, чтобы вытаскивать в метод.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
16 июн. 2024, в 01:07
600 руб./в час
15 июн. 2024, в 23:20
50000 руб./за проект
15 июн. 2024, в 23:15
4000 руб./за проект