Nevermind, кажется, что независимо от того, что такое authorLast, он не распознает его; он дает ту же ошибку. Может быть что-то не так с operator.attrgetter?Атрибут объекта как список
Заранее спасибо.
Короткие, самодостаточная Correct (компилируется), пример:
import operator
class Source:
sources_count = 0
list_of_sources = []
def __init__(self, title, author, year, publisher, city_of_publication, summary, type, tags): #basic attributes of Source class with addition to list_of_sources
self.title = title
self.author = author
self.aSplit = author.split()
self.authorFirst = self.aSplit[0]
self.authorLast = self.aSplit[1]
self.year = year
self.publisher = publisher
self.city_of_publication = city_of_publication
self.summary = summary
self.type = type
self.tags = tags
Source.sources_count += 1
Source.list_of_sources.append(self)
s2 = Source("Hi", "Jacob Jenkins", "2013", "Publisher", "City", "Summary", "Print", "this, is, tag")
s1 = Source("Hoop", "Chelsea Chibbles", "2013", "Publisher", "City", "Summary", "Print", "this, is, tag")
print(s2.authorFirst)
print(s2.authorLast)
print(s1.authorFirst)
print(s1.authorLast)
key_last_name = operator.attrgetter("authorLast")
sorted_list = sorted(Source.list_of_sources, key=key_last_name)
print(sorted_list[0].authorLast, sorted_list[1].authorLast)
Не имеет ошибку. Теперь я проверяю остальную часть кода. Как только я выхожу из этих трех частей (класс, метод и функция), он работает нормально. Может быть, это имеет какое-то отношение к травлению.
РЕДАКТИРОВАТЬ: Проблема, похоже, исправлена. Мое подозрение в том, что я замачивал файлы до внесения изменений в атрибуты, поэтому у объектов на самом деле не было указанных атрибутов, потому что они были маринованы до того, как существовали атрибуты. Теперь он отлично работает.
Просьба показать воспроизводимый пример. Кроме того, вы, кажется, смешиваете 'aSplit' и' a_split'. –
Что вы подразумеваете под воспроизводимым примером? – Aristides
В идеале, образец кода, который мы можем запустить. Или, по крайней мере, образец, который позволит нам понять, что происходит. Прямо сейчас мы не знаем, чей '__init__' вы показываете (хотя, вероятно,' Source') и что 'list_of_sources' (вероятно, список всех экземпляров) и как вы создаете экземпляры. Тот факт, что атрибут относится к списку, не должен быть проблемой в любом случае –