Почему параметры объектов одного класса становятся одинаковыми?

Разрабатываю меню игры на Pygame. Создал отдельный класс для кнопки, однако когда я задаю разные параметры 2-м кнопкам через init, а именно позицию кнопок, self-параметры становятся одинаковыми, хотя так не должно быть. В чём может быть проблема? Заранее благодарен.

Код файла с классами:

from copy import deepcopy
import pygame


class Button(object):
    def __init__(self, font_size, button_size, string, color=(255, 255, 255), font_name='Pixelify', center=False, button_pos=[0, 0], center_x=0, center_y=0):
        self.pos = button_pos
        self.size = button_size
        self.text = pygame.font.Font(f'fonts/{font_name}.ttf', font_size).render(string, False, color)
        self.little_text = pygame.font.Font(f'fonts/{font_name}.ttf', font_size - 3).render(string, False, color)
        self.little_text_rect = self.little_text.get_rect(center=[center_x, center_y])

        self.main_rect = pygame.Rect(self.pos[0], self.pos[1], self.size[0], self.size[1])
        self.little_main_rect = pygame.Rect(self.pos[0] - 2, self.pos[1] - 2, self.size[0] - 4, self.size[1] - 4)

        if center:
            self.main_rect.center = [center_x, center_y]
            self.little_main_rect.center = [center_x, center_y]

            self.pos[0] = center_x - button_size[0] // 2
            self.pos[1] = center_y - button_size[1] // 2

        self.text_rect = self.text.get_rect(center=self.main_rect.center)

        self.color = color
        self.click = False

    def check_click(self, have_click, mouse_pos):
        if have_click:
            if (self.pos[0] <= mouse_pos[0] <= self.pos[0] + self.size[0]) and (self.pos[1] <= mouse_pos[1] <= self.pos[1] + self.size[1]):
                self.click = True

                return True

        self.click = False

        return False

    def draw(self, screen):
        if self.click:
            screen.blit(self.little_text, self.little_text_rect)
            pygame.draw.rect(screen, self.color, self.little_main_rect, 5)

        else:
            screen.blit(self.text, self.text_rect)
            pygame.draw.rect(screen, self.color, self.main_rect, 5)


class Text(object):
    def __init__(self, string, font_size, color=(255, 255, 255), font_name='Pixelify', center=False, pos=(0, 0), center_x=0, center_y=0):
        self.text = pygame.font.Font(f'fonts/{font_name}.ttf', font_size).render(string, False, color)
        self.text_rect = None

        if center:
            self.text_rect = self.text.get_rect(center=[center_x, center_y])

        else:
            self.text_rect = pos

    def draw(self, screen):
        screen.blit(self.text, self.text_rect)

Код main.py:

import configparser
from copy import deepcopy
import classes
import pygame
import sys

pygame.init()

frame_size_x = 1000
frame_size_y = 800

main_screen = pygame.display.set_mode((frame_size_x, frame_size_y))
now_screen_type = 'menu'

main_road_img = pygame.image.load('images/main_road.png')
T_road_img = pygame.image.load('images/T road.png')
X_road_img = pygame.image.load('images/X road.png')

road_images = [main_road_img, T_road_img, X_road_img]

main_fps = 60

main_mass = [['-'] * 20 for i in range(14)]

start_button = classes.Button(80, [400, 100], 'Start', center=True, center_x=frame_size_x // 2, center_y=400)
settings_button = classes.Button(80, [400, 100], 'Settings', center=True, center_x=frame_size_x // 2, center_y=550)

menu_interface = {
    'texts': [classes.Text('Road game', 84, pos=[100, 40])]
}


def draw_game_background(screen):
    screen.fill((0, 0, 0))

    for y_ind in range(14):
        for x_ind in range(20):
            mass_symb = ['-', '+', 'T']

            for elem in range(len(mass_symb)):
                if main_mass[y_ind][x_ind] == mass_symb[elem]:
                    screen.blit(road_images[elem], [x_ind * 50, 100 + y_ind * 50])


def menu_checking(have_click, pos=(0, 0)):
    start_ans = start_button.check_click(have_click, pos)
    settings_ans = settings_button.check_click(have_click, pos)

    if start_ans: return 'start'
    elif settings_ans: return 'settings'
    else: return 'none'


def draw_menu_background(screen):
    screen.fill((0, 0, 0))

    for text in menu_interface['texts']:
        text.draw(screen)

    start_button.draw(screen)
    settings_button.draw(screen)


def menu_window(screen):
    global now_screen_type

    menu_screen_type = 'main'

    fps_controller = pygame.time.Clock()

    while now_screen_type == 'menu':
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        mouse_clicks = pygame.mouse.get_pressed()
        mouse_pos = pygame.mouse.get_pos()

        menu_checking(mouse_clicks[0], mouse_pos)

        draw_menu_background(screen)

        pygame.display.update()

        fps_controller.tick(main_fps)
                

def game_window(screen):
    global now_screen_type

    menu_screen_type = 'main'

    fps_controller = pygame.time.Clock()

    while now_screen_type == 'game':
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        draw_game_background(screen)

        pygame.display.update()

        fps_controller.tick(main_fps)


if __name__ == '__main__':
    while True:
        if now_screen_type == 'menu':
            menu_window(main_screen)

        elif now_screen_type == 'game':
            game_window(main_screen)

Ответы (0 шт):