我的一個類對對象集合進行了大量聚合計算,然後分配一個適合特定對象的屬性和值:即,Python:顯示分配給類對象的屬性代碼
class Team(object):
def __init__(self, name): # updated for typo in code, added self
self.name = name
class LeagueDetails(object):
def __init__(self): # added for clarity, corrected another typo
self.team_list = [Team('name'), ...]
self.calculate_league_standings() # added for clarity
def calculate_league_standings(self):
# calculate standings as a team_place_dict
for team in self.team_list:
team.place = team_place_dict[team.name] # a new team attribute
我知道,只要calculate_league_standings
已運行,每隊有team.place
。我希望能夠做的是掃描代碼class Team(object)
並閱讀所有屬性,這些屬性都是由類方法創建的,也是由對類對象進行操作的外部方法創建的。我只是爲了查看屬性名稱是什麼而輸入for p in dir(team): print p
有點不舒服。我可以在團隊__init__
中定義一堆空白attributes
。例如。
class Team(object):
def __init__(self, name): # updated for typo in code, added self
self.name = name
self.place = None # dummy attribute, but recognizable when the code is scanned
這似乎是多餘的有calculate_league_standings
回報team._place
然後添加
@property
def place(self): return self._place
我知道我可以在上面class Team
,這是顯而易見的解決方案發表意見的屬性列表,但我覺得好像有這裏必須是最好的做法,這裏有一些pythonic和優雅的東西。
請說清楚這句話_「然後賦值和屬性和值適合於_。對我來說,這意味着什麼 – eyquem 2013-03-03 18:51:51
因此,如果'ld = LeagueDetails()',然後'ld.calculate_league_standing()'。它計算'place'值並將該值賦予每個'team'的屬性'place'。當我查看'class Team(object)'的代碼時,它沒有顯示明顯的事情。每個團隊都有一個'team.place'屬性。 – Cole 2013-03-03 18:57:54
你寫的代碼是錯誤的,因爲你在方法外使用'self'。你的行'self.team_list = ...'不起作用。你爲什麼不做一個'__init__'方法來設置'self.team_list'並且調用'calculate_league_standing'? – BrenBarn 2013-03-03 19:07:09