2013-10-01 5 views
-1

Ниже приведен мой код. Это дает мне ошибку компиляции, говоря, что художник не был определен. Это меня смущает, потому что художник - это параметр, который я прохожу.Ошибка инициализации Python класса

Спасибо.

class Track: 
def __init__(self, artist, title, album=None): 
    self.artist = str(artist) 
    self.title = str(title) 
    self.album = album 

def __str__(self): 
    return self.artist + " " + self.title + " " + self.album 

def set_album(self, album): 
    self.album = album 

класс Альбом: Защиту INIT (Я, исполнитель, название, год = '', жанр = '', треки = None): self.artist = ул (художник) self.title = ул (название) self.year = ул (год) self.genre = ул (жанр) self.tracks = отслеживает

def __str__(self): 
    return self.artist + " " + self.title + " " + self.year + " " + self.genre + " " + self.tracks 

def add_track(track): 
    self.tracks.append(track) 

защиту music_library (треки, альбомы):

while true: 
    command = raw_input("Please enter a command (s, st or sa)").lower() 

    if "s " in command: 
     searchText = command.split()(1) 

    elif "sa " in command: 
     searchText = command.split()(1) 

    elif "st " in command: 
     searchText = command.split()(1) 

импорт ОС из mutagen.mp3 импорта MP3 четкости load_library (реж):

for root, dirs, files in os.walk("."): 
    for filename in files: 
     if filename.lower().endswith(".mp3"): 
      fullname = os.path.join(root, filename) 
      print "\n%s" % fullname 
      try: 
       audio = MP3(fullname) 
       for key in audio: 
        print " %s: %s" % (key, str(audio[key])) 
      except: 
       print "Error on %s" % fullname 

То есть весь файл. Я бегу это с помощью

питона musiclib.py

+1

Обеспечьте полный код и полную трассировку и не бросайте неполные определения классов перед нашими ногами. –

+0

Этот код работает нормально. –

+0

Зачем вам нужно str() здесь? –

ответ

3

Я подозреваю, что это потому, что вы смешиваете вкладки и пробелы. Когда я скопировать и вставить код и посмотреть на него, я вижу:

' class Track:' 
' \tdef __init__(self, artist, title, album=None):' 
' \t\tself.artist = str(artist)' 
'   self.title = str(title)' 
'   self.album = album' 
' ' 
' \tdef __str__(self):' 
' \t\treturn self.artist + " " + self.title + " " + self.album' 
' ' 
' \tdef set_album(self, album):' 
' \t\tself.album = album' 

Смесительные и табуляции путают Python о том, насколько код с отступом. Переключитесь на использование четырех пробелов для отступов и запустите свой код с помощью python -tt yourprogramname.py, чтобы подтвердить этот диагноз.

Смежные вопросы