This is my first time trying OOP and I definitely made many stylistic mistakes. Please tell me how I should improve.
Controls:
- w and s for player 1
 - ↑ and ↓ for player 2
 
The player with higher score has shorter paddle. Once the difference in score is bigger than 7, the game quits.
import pygame
import random
YELLOW = (255, 255, 100)
BLUE = (50, 50, 255)
RED = (255, 50, 50)
BLACK = (0, 0, 0)
WHITE = (255,255,255)
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PADDLE_HEIGHT = 100
done = False
class Ball(pygame.sprite.Sprite):
    def __init__(self, x, y, xspeed, yspeed):
        super().__init__()
        self.image = pygame.Surface((16,16))
        self.rect = self.image.get_rect()
        self.x = x
        self.y = y
        self.rect.x = x
        self.rect.y = y
        pygame.draw.circle(self.image,YELLOW,(8,8),8)
        self.speed_x = xspeed
        self.speed_y = yspeed
        self.deathcount_left = None
        self.deathcount_right = None
        self.walls = None
        self.index = 0
    def checkdeath(self):
        if self.rect.x<0:
            self.deathcount_left.plus()
            self.rect.x = self.x
            self.rect.y = self.y
            self.speed_x = random.randint(8,12)
            self.speed_y = random.randint(8,12)
        elif self.rect.x>SCREEN_WIDTH:
            self.deathcount_right.plus()
            self.rect.x = self.x
            self.rect.y = self.y
            self.speed_x = random.randint(10,12)
            self.speed_y = random.randint(10,12)                                        
    def update(self):
        self.checkdeath()
        self.rect.x += self.speed_x
        wall_hit_list = pygame.sprite.spritecollide(self, self.walls, False)
        if self.index == 1:
            self.rect.y+=self.speed_y
            self.index = 0
        else:
            if wall_hit_list:
                self.speed_x = -self.speed_x
                self.rect.y += self.speed_y
            else:
                self.rect.y += self.speed_y
                wall_hit_list = pygame.sprite.spritecollide(self, self.walls, False)
                if wall_hit_list:
                    self.speed_y = -self.speed_y
                    self.index=1
class Wall(pygame.sprite.Sprite):
    def __init__ (self, x, y, width, height):
        super().__init__()
        self.width = width
        self.height = height
        self.x = x
        self.y = y
        self.image = pygame.Surface([self.width, self.height])
        self.image.fill(BLUE)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
class Paddle(Wall):
    def __init__ (self,x, y, width, height):
        super().__init__(x, y, width, height)
        self.walls = None
        self.speed = 0
        self.my_score = None
        self.my_enemy = None
    def changespeed(self, change):
        self.speed+=change
    def changelength(self):
        self.height = self.my_score.lengthcal(self.my_enemy)
        self.image = pygame.Surface([self.width, self.height])
        self.image.fill(BLUE)
        self.rect = self.image.get_rect()
        self.rect.x = self.x
        self.rect.y = self.y
    def update(self):
        self.y += self.speed
        self.changelength()
        wall_hit_list = pygame.sprite.spritecollide(self, self.walls, False)
        for wall in wall_hit_list:
            if self.speed>0:
                self.y = wall.rect.top - self.height
            else:
                self.y = wall.rect.bottom
class Score():
    def __init__(self, x, y,color):
        self.score = 0
        self.color = color
        self.x = x
        self.y = y
    def plus(self):
        self.score += 1
    def lengthcal(self, enemy):
        if self.score <= enemy.my_score.score:
            return PADDLE_HEIGHT
        else:
            return PADDLE_HEIGHT-(self.score-enemy.my_score.score)*10
    def draw(self):
        font = pygame.font.SysFont(None,32)
        self.image = font.render(str(self.score), True, self.color, BLACK)
        self.rect = self.image.get_rect()
        self.rect.x = self.x
        self.rect.y = self.y
        screen.blit(self.image, self.rect)
pygame.init()
screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
pygame.display.set_caption('Pong')
all_sprite_list = pygame.sprite.Group()
all_wall_list = pygame.sprite.Group()
wall_list = pygame.sprite.Group()
empty_list = pygame.sprite.Group()
wall = Wall(0, 0, SCREEN_WIDTH, 10)
wall_list.add(wall)
all_wall_list.add(wall)
all_sprite_list.add(wall)
wall.walls = empty_list
wall = Wall(0, SCREEN_HEIGHT-10, SCREEN_WIDTH, 10)
wall_list.add(wall)
all_wall_list.add(wall)
all_sprite_list.add(wall)
wall.walls = empty_list
score_left = Score(190, 30, WHITE)
score_right = Score(590, 30, WHITE)
paddle_left = Paddle(50, 350, 10, PADDLE_HEIGHT)
paddle_right = Paddle(SCREEN_WIDTH-50, 350, 10, PADDLE_HEIGHT)
all_wall_list.add(paddle_left)
all_sprite_list.add(paddle_left)
paddle_left.my_score = score_right
paddle_left.my_enemy = paddle_right
all_wall_list.add(paddle_right)
all_sprite_list.add(paddle_right)
paddle_right.my_score = score_left
paddle_right.my_enemy = paddle_left
ball = Ball(400,300,14,9)
all_sprite_list.add(ball)
paddle_left.walls = wall_list
paddle_right.walls = wall_list
ball.walls = all_wall_list
ball.deathcount_left = score_left
ball.deathcount_right = score_right
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                paddle_right.changespeed(-8)
            elif event.key == pygame.K_DOWN:
                paddle_right.changespeed(8)
            elif event.key == pygame.K_w:
                paddle_left.changespeed(-8)
            elif event.key == pygame.K_s:
                paddle_left.changespeed(8)
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_UP:
                paddle_right.changespeed(8)
            elif event.key == pygame.K_DOWN:
                paddle_right.changespeed(-8)
            elif event.key == pygame.K_w:
                paddle_left.changespeed(8)
            elif event.key == pygame.K_s:
                paddle_left.changespeed(-8)
    all_sprite_list.update()
    if paddle_left.height<30 or paddle_right.height<30:
        break
    screen.fill(BLACK)
    score_left.draw()
    score_right.draw()
    all_sprite_list.draw(screen)
    pygame.display.flip()
pygame.quit()