I am creating a basic platforming system. When the player hits the platform, I want the players velocity to be set to the platforms velocity. However, the platforms velocity changes when it is landed upon, as tested through my print statements, despite the platforms velocity not being changed explicitly through the code (to my understanding). I have included the entire source code as I'm not sure where, or how, the platforms velocity is being changed.
The platforms velocity appears to change when the player is intersecting it and the players velocity changes, such as between the print statements "1" and "2".
import pygame
import numpy as np
import random
class player:
    def __init__(self,position,velocity):
        self.position=position
        self.velocity=velocity
    def updatepos(self):
        self.position+=self.velocity
    def draw(self):
        self.updatepos()
        pygame.draw.rect(screen,(255,0,0),(self.position[0],self.position[1]-20,20,20))
class platform:
    def __init__(self,position,length,velocity):
        self.position=position
        self.length=length
        self.velocity=velocity
    def updatepos(self):
        self.position += self.velocity
    def draw(self):
        pygame.draw.rect(screen, (0, 0, 255), (self.position[0], self.position[1], self.length, 5))
width, height= 800,600
screen=pygame.display.set_mode((width,height))
player=player(np.array([100.0,100.0]),np.array([0.0,0.0]))
platforms=[ platform( np.array([100.0,200.0]), 100, np.array([1.0,1.0]) ) ]
#for _ in range(1):
    #platforms+=[platform( np.array( [float(random.randrange(0,800)),float(random.randrange(0,800))]), 50.0, np.array( [float(random.randrange(0,3)),float(random.randrange(0,3))] ))]
wpress=False
apress=False
dpress=False
#main loop
running=True
while running:
    #gravity
    print(str(platforms[0].velocity)+" 1")
    player.velocity+=np.array([0.0,0.5])
    print(str(platforms[0].velocity)+" 2")
    #checking intersections
    startline = player.position
    endline = player.position+player.velocity
    direction=endline-startline
    grounded=False
    for _ in range(len(platforms)):
        if startline[1] <= platforms[_].position[1] and endline[1] >= platforms[_].position[1]:
            scalar= (platforms[_].position[1] - startline[1]) / direction[1]
            x=startline[0]+direction[0]*scalar
            y=platforms[_].position[1]
            if platforms[_].position[0]-20 < x < platforms[_].position[0] + platforms[_].length:
                player.position = np.array( [x,y] )
                player.velocity=platforms[_].velocity
                grounded=True
                break
    #drawing on screen
    for _ in range(len(platforms)):
        platforms[_].position+=platforms[_].velocity
        platforms[_].draw()
    #controls
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                if grounded:
                    print(str(platforms[0].velocity) + " 21")
                    player.velocity[1]= -8.0
                    print(str(platforms[0].velocity) + " 22")
            elif event.key == pygame.K_a:
                apress=True
            elif event.key == pygame.K_d:
                dpress=True
            elif event.key == pygame.K_SPACE:
                player.position=np.array([100.0,100.0])
                player.velocity=np.array([0.0,0.0])
                platforms=[]
                for _ in range(60):
                    platforms += [
                        platform(np.array([float(random.randrange(0, 800)), float(random.randrange(0, 800))]), 50.0,
                                 np.array([float(random.randrange(0, 3)), float(random.randrange(0, 3))]))]
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_a:
                apress = False
            elif event.key == pygame.K_d:
                dpress = False
        if apress and dpress or not (apress or dpress):
            print(str(platforms[0].velocity) + " 31")
            player.velocity[0] = 0
            print(str(platforms[0].velocity) + " 32")
        elif apress:
            print(str(platforms[0].velocity) + " 41")
            player.velocity[0]=-5.0
            print(str(platforms[0].velocity) + " 42")
        elif dpress:
            print(str(platforms[0].velocity) + " 51")
            player.velocity[0] = 5.0
            print(str(platforms[0].velocity) + " 52")
    player.draw()
    pygame.display.flip()
    clock = pygame.time.Clock()
    clock.tick(5)
    screen.fill((0,0,0))
 
    