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.
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: