У меня есть это:Попытка передать параметры как функции в Python
class Student:
def __init__(self, FirstName, LastName):
self.FirstName = FirstName
self.LastName = LastName
def __iter__(self):
return self
Students = [
# FirstName LastName
Student("Mary", "Smith"),
Student("Joe", "Jones"),
Student("Jane", "Doe" )]
Я делаю Student
класс. И затем я делаю список из 3 Student
объектов. Тогда я могу напечатать список имен, как это:
И послушно выдает это:
Mary Smith
Joe Jones
Jane Doe
Тогда я гугл, как отсортировать список объектов по атрибуту и нашел это:
Students.sort(key = lambda x: x.LastName)
И это работает. Эта линия сортировки списка с помощью атрибута LastName
и я могу напечатать его таким же образом, как описано выше, и имена в порядке LastName
:
Jane Doe
Joe Jones
Mary Smith
Но то, что я хочу, чтобы это произошло, это есть входы пользователей для того, что список для сортировки (sortlist
) и по которому атрибут сортируется по (sortby
). Поэтому я пробовал:
def sort(sortlist, sortby):
sortlist.sort(key = lambda x: x.sortby)
sort(Students, FirstName)
И это не работает. Сначала он говорит:
NameError: "name 'FirstName' is not defined"
Что это собственная проблема ... Как я могу сказать, что это FirstName
является атрибутом списка Я хочу его отсортировать?
Тогда я сделал FirstName
строку просто попробовать, что ...
AttributeError: "Student instance has no attribute 'sortby'"
Что я знаю, что нет атрибута sortby
, который должен быть параметр ... но он не может использовать параметр, как это? Почему нет? Как я могу заставить это сделать это?
Спасибо, что работает! – user2438690