Search code examples
pythonspyder

Variables in Spyder not showing up (tried the options menu)


variable explorer img

The variables of my program aren't showing up in the variable explorer. Is there someone who could tell me why this is? I'm relatively new to spyder/coding in general and this is my first post on here, so go easy on me.

# main.py
from player import Player
import pandas as pd

def main():
    # Prompt user for input
    player_name = input("Enter player name: ")
    season = input("Enter season: ")

    # Create player object
    player = Player(player_name)

    # Fetch player data (game log, etc.)
    player.fetch_data(season)

    print(player.game_log)
    

if __name__ == "__main__":
    main()

# player.py
from nba_api.stats.static import players 
from nba_api.stats.endpoints import playergamelog


class Player:
    def __init__(self, name):
        self.name = name
        self.player_id = None
        self.game_log = None

    def fetch_data(self, season):
        # Fetch player ID using NBA API
        self.player_id = self._fetch_player_id()

        # Fetch game log for the specified season using NBA API
        self.game_log = self._fetch_game_log(season)

    def _fetch_player_id(self):
        player_dict = players.get_active_players()
        player = [player for player in player_dict if player['full_name']  == self.name][0]
        player_id = player['id']
        return player_id
    
    def _fetch_game_log(self, season):
        gamelog = playergamelog.PlayerGameLog(player_id = self.player_id, season = season)
        gamelog_df = gamelog.get_data_frames()[0]
        return gamelog_df

The program takes user input of player name and season and spits out the gamelog under those parameters. After running the code, picking 'Lebron James' and '2023' for name and season respectively, the console does show the dataframe. I was expecting to also see the variables for player_name, player_id, season, and the panda dataframe in the variable explorer in spyder. But these variables don't show up. This is odd bc when I wrote the rough outline for the code (in one file without functions, classes, user input, etc.) I was seeing these in the variable explorer.


Solution

  • Look into and learn about scope of class objects and functions. If you want the variable, it needs to be returned and stored.

    See code below to see what I mean:

    # main.py
    from player import Player
    import pandas as pd
    
    def main():
        # Prompt user for input
        player_name = input("Enter player name: ")
        season = input("Enter season: ")
    
        # Create player object
        player = Player(player_name)
    
        # Fetch player data (game log, etc.)
        player.fetch_data(season)
    
        print(player.game_log)
        return player
        
    
    if __name__ == "__main__":
        output = main()
    
    
    
    # player.py
    from nba_api.stats.static import players 
    from nba_api.stats.endpoints import playergamelog
    
    
    class Player:
        def __init__(self, name):
            self.name = name
            self.player_id = None
            self.game_log = None
    
        def fetch_data(self, season):
            # Fetch player ID using NBA API
            self.player_id = self._fetch_player_id()
    
            # Fetch game log for the specified season using NBA API
            self.game_log = self._fetch_game_log(season)
    
        def _fetch_player_id(self):
            player_dict = players.get_active_players()
            player = [player for player in player_dict if player['full_name']  == self.name][0]
            player_id = player['id']
            return player_id
        
        def _fetch_game_log(self, season):
            gamelog = playergamelog.PlayerGameLog(player_id = self.player_id, season = season)
            gamelog_df = gamelog.get_data_frames()[0]
            return gamelog_df
    

    Now you have a stored variable to view:

    enter image description here