【发布时间】:2018-07-09 07:44:44
【问题描述】:
如果我键入 print SongList[i],我的代码底部的循环似乎不会打印歌曲标题,它会打印给定对象的内存地址。我确定它返回的是歌曲列表,但返回的是对象属性。我错过了一种方法吗?抱歉,如果过去已经回答过这个问题,我找不到示例。
class Song:
def __init__(self, title, artist, duration = 0):
self.title = title
self.artist = artist
self.duration = duration
class Album:
def __init__(self, albumTitle, releaseYear, albumSize):
self.albumTitle = albumTitle
self.releaseYear = releaseYear
self.trackList = []
self.albumSize = albumSize
def addSong(self, albumSong, position):
self.trackList.append((position, albumSong))
class Artist:
def __init__(self, name, year):
self.name = name
self.year = year
self.members = []
def addMembers(self, bandMember):
self.members.append(bandMember)
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
BlinkAndSee = Album("Blink and See", 2018, 5)
Band = Artist("Dinkers", 2002)
AlexThomas = Person("Alex Thomas", 23, "Female")
SeanJohnson = Person("Sean Johnson", 25, "Male")
SineadMcAdams = Person("Sinead McAdams", 21, "Female")
Band.members.append(AlexThomas)
Band.members.append(SeanJohnson)
Band.members.append(SineadMcAdams)
Stoner = Song("Stoner", Band, 320)
Blink = Song("Blink and See", Band, 280)
See = Song("See", Band, 291)
DumbnessAndSand = Song("Dumbness and Sand", Band, 231)
OrangeYellow = Song("Orange Yellow", Band, 353)
BlinkAndSee.trackList.append(Stoner)
BlinkAndSee.trackList.append(BlinkAndSee)
BlinkAndSee.trackList.append(See)
BlinkAndSee.trackList.append(DumbnessAndSand)
BlinkAndSee.trackList.append(OrangeYellow)
SongList = BlinkAndSee.trackList
#Loop through the Song list from album tracklist
for i in range(SongList.__len__()):
print(SongList[i].title)
【问题讨论】:
-
为什么你的
Album对象中有一个addSong方法,然后手动使用.tracklist.append(...)将歌曲添加到曲目列表中? -
我无法重现您的问题。它为我打印
Stoner然后崩溃,因为您将专辑本身添加到其列表中。 -
如果我将
BlinkAndSee.trackList.append(BlinkAndSee)更改为BlinkAndSee.trackList.append(Blink),它会按照您的描述打印歌名。 -
总是错字!感谢您的帮助
标签: python-3.x object