@Span4ev

Обязательно ли использовать класс в Python?

Привет. Учу пайтон. Знаю про классы, но пока решил обойтись без них.
Сделал простую функцию и теперь думаю, а нужно ли делать то же самое через классы и в чём принципиальная разница, если я итак получил то, что мне нужно?
Используя класс я создаю экземпляры класса - те же объекты, которые я создал и так. Мне понадобится 3к объектов с рандомным цветом и я использую эту функцию и обойдусь без классов.

Функция простая:
вызывает метод draw у pygame и рисует на экране кружки (просто для практики)
Но я вот сомневаюсь, что может классы как-то иначе работают, в них больше смысла, они более читаемые и понятные? Есть какое-то сомнение, которое не могу определить.
Я сейчас говорю только про конкретный простой пример, а не в целом, в контексте будущего использования и потенциала класса.
Стоит ли для таких простых примеров нагружать код, делать его менее читаемым, но принципиально использовать классы?
Так-то синтаксис классов для меня пока сложен и запутан, и в нём сложнее ориентироваться, чем в простых функциях из-за self. super(), __init__.
На всякий случай сам код:

from importing_modules import *
from lists import list_colors

screen_width   = 400
screen_height  = 400
object_amount  = 120
object_size    = 10

screen_bg_color = (123, 104, 238) 

# Рандомный цвет из списка colors_list
def get_random_color_(count):
    count = count
    random_color = random.choice(list_colors)     
    return random_color

# получение рандомного имени
def get_object_name(count):    
    count = count
    name = names.get_first_name()
    return name

# создание объектов
def object_Create(screen, count, screen_width, screen_height, size):
	screen = screen
	screen_width = screen_width
	screen_height = screen_height
	count = count
	size = size
	start_position = size
	x_end_position = screen_width - size
	y_end_position = screen_height - size

	for i in range(count):
		name = get_object_name(count)
		color = get_random_color_(count)
		random_pos_x = random.randint(start_position, x_end_position)
		random_pos_y = random.randint(start_position, y_end_position)
		pygame.draw.circle(screen, color, (random_pos_x, random_pos_y), size)

def start_screen():

    while True:
        pygame.init()
        screen = pygame.display.set_mode((screen_width, screen_height))
        screen.fill(screen_bg_color)
        pygame.display.set_caption("Привет, ХАБР")

        # (screen, count, screen_width, screen_height, size)
        object_Create(screen, object_amount, screen_width, screen_height, object_size)

        while True:
            for event in pygame.event.get():    # Проверить очередь события 
                if event.type == pygame.QUIT:   # Если его тип "закрыть"
                    sys.exit()                  # то "выход"
            pygame.display.update()

start_screen()
  • Вопрос задан
  • 489 просмотров
Решения вопроса 2
@twistfire92
Python backend developer
https://www.youtube.com/watch?v=o9pEzgHorH0

Можешь посмотреть что об этом думает один из разработчиков самого языка (из названия видео в принципе понятно)

Если кратко: Можно обойтись без класса - обходись без него.
Ответ написан
iggor-markin
@iggor-markin
Python Developer
Классы нужны, чтобы писать меньше кода, переиспользуя повторяющиеся участки. Если то, что на экране - это вся твоя программа, тебе явно не нужны классы. В больших и средних проекта удобно использовать классы в том числе для логического объединения функций, что ускоряет понимание кода. В целом, в программировании нет ничего обязательного. Подходы, технологии, парадигмы и прочие умные слова стоит использовать там, где без них не обойтись, а не везде подряд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Классы удобны, когда у тебя есть некая сущность, наделённая состоянием и поведением. Иными словами, если есть поведение (т.е. функции) и оно требует сохранения каких-то данных между вызовами. Да, можно хранить эти данные через возврат значений и передачу параметров. По-сути, так реализуется ООП в языках вроде C (не путать с C++). Если эта сущность соответствует какому-то предмету, с которым ты работаешь, так еще лучше.
Ответ написан
@trankov
Если не надо хранить какие-то постоянные данные, классы не нужны.
Вообще, в Python в стандартной библиотеке уже написано большинство нужных в обычной жизни классов. Просто используйте их.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы