我正在使用globals
变量来迁移我所拥有的项目,实际上具有由单独模块中定义的类定义的结构。这是我第一次真正使用OOP,所以想要了解重新定义类的实例是否安全,或者我的代码是否遗漏了什么。
在我的代码顶部,我导入了我的模块 -
import NHLGameEvents
config = configparser.ConfigParser()
config.read('config.ini')
TEAM_BOT = config['DEFAULT']['TEAM_NAME']
然后我构建了两个Team
对象(在我的NHLGameEvents
模块中定义)。
game_today, game_info = is_game_today(get_team(TEAM_BOT))
awayteam_info = game_info["teams"]["away"]["team"]
awayteamobj_name = awayteam_info["name"]
awayteamobj_shortname = awayteam_info["teamName"]
awayteamobj_tri = awayteam_info["abbreviation"]
away_team_obj = NHLGameEvents.Team(
awayteamobj_name, awayteamobj_shortname, awayteamobj_tri, "away")
game_obj.register_team(away_team_obj, "away")
hometeam_info = game_info["teams"]["home"]["team"]
hometeamobj_name = hometeam_info["name"]
hometeamobj_shortname = hometeam_info["teamName"]
hometeamobj_tri = hometeam_info["abbreviation"]
home_team_obj = NHLGameEvents.Team(
hometeamobj_name, hometeamobj_shortname, hometeamobj_tri, "home")
game_obj.register_team(home_team_obj, "home")
home_team_obj.preferred = bool(home_team_obj.team_name == TEAM_BOT)
away_team_obj.preferred = bool(away_team_obj.team_name == TEAM_BOT)
在某些情况下,我想将这些Team
对象引用为首选和其他而不是home / away,因此我使用了我定义的方法Game
类来检索它。由于我的Game
对象知道我的Teams
,我的Game
类中返回此元组的方法是 -
def register_team(self, team, key):
"""Registers a team to the instance of the Game."""
if key not in ('home', 'away'):
raise AttributeError(
"Key '{}' is not valid - Team key can only be home or away.".format(key))
if len(self.teams) > 1:
raise ValueError(
"Too many teams! Cannot register {} for {}".format(team, self))
self.teams[key] = team
team.game = self
team.tv_channel = self.broadcasts[key]
def get_preferred_team(self):
"""Returns a Tuple of team objects of the preferred & other teams."""
if self.teams["home"].preferred is True:
return (self.teams["home"], self.teams["away"])
return (self.teams["away"], self.teams["home"])
然后我可以从我的脚本中的任何位置检索该信息。 preferred_team_obj,other_team_obj = game_obj.get_preferred_team()
重新定义这些类实例是安全的(ex - home_team_obj
也称为preferred_team_obj
),或者我只想在引用它们时使用if语句,例如 -
if home_team_obj.preferred:
# Do something with home_team_obj
else:
# Do something with away_team_obj
答案 0 :(得分:0)
作为对该问题的后续,似乎完全可以安全地将对象分配给另一个名称,以供以后在代码中使用而没有问题(按照下面的示例)。
preferred_team = game.preferred_team
preferred_homeaway = preferred_team.home_away
on_ice = json_feed["liveData"]["boxscore"]["teams"][preferred_homeaway]["onIce"]
players = json_feed["gameData"]["players"]
if recent_event(play):
get_lineup(game, event_period, on_ice, players)