Я пытаюсь изучить python, и теперь я пытаюсь понять классы и способы манипулирования ими с помощью экземпляров.
Кажется, я не могу понять эту практическую проблему:
Создать и вернуть объект ученика, имя, возраст и специальность которого совпадают с указанными в качестве входных данных.
def make_student(name, age, major)
Я просто не понимаю, что это означает под объектом, они означают, что я должен создать массив внутри функции, которая содержит эти значения? или создать класс и позволить этой функции быть внутри него и назначить экземпляры? (перед этим вопросом меня попросили создать студенческий класс с указанием имени, возраста и специальности внутри)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
__init__
метод актуален здесь: docs.python.org/2/reference/datamodel.html#object.__init__Ответы:
Обратите внимание, что даже несмотря на то, что один из принципов философии Python гласит: «Должен быть один - а желательно только один - очевидный способ сделать это» , все же есть несколько способов сделать это. Вы также можете использовать два следующих фрагмента кода, чтобы воспользоваться динамическими возможностями Python:
Я предпочитаю первое, но бывают случаи, когда второе может быть полезно, например, при работе с базами данных документов, такими как MongoDB.
источник
class Unicorn
иhas_hooves = True
вместоname = ""
.Создайте класс и дайте ему
__init__
метод:Теперь вы можете инициализировать экземпляр
Student
класса:Хотя я не уверен, зачем вам
make_student
функция student, если она выполняет то же самое, что иStudent.__init__
.источник
Объекты - это экземпляры классов. Классы - это просто чертежи объектов. Итак, учитывая определение вашего класса -
Вы можете создать
make_student
функцию, явно назначив атрибуты новому экземпляруStudent
-Но, вероятно, имеет смысл сделать это в конструкторе (
__init__
) -Конструктор вызывается при использовании
Student()
. Он будет принимать аргументы, определенные в__init__
методе. Подпись конструктора теперь по существу будетStudent(name, age, major)
.Если вы используете это, то
make_student
функция тривиальна (и излишняя) -Ради интереса вот пример того, как создать
make_student
функцию без определения класса. Пожалуйста, не пытайтесь делать это дома.источник
__init__()
метод отличается от конструктора?__init__
не является конструктором, «потому что объект уже был построен к моменту__init__
вызова, и у вас уже есть действительная ссылка на новый экземпляр класса». ( diveintopython.net/object_orient_framework/… )когда вы создаете объект с использованием предопределенного класса, сначала вы хотите создать переменную для хранения этого объекта. Затем вы можете создать объект и сохранить созданную вами переменную.
Фактически этот метод инициализации является конструктором класса. Вы можете инициализировать этот метод, используя некоторые атрибуты .. В этом случае, когда вы создаете объект, вам нужно будет передать некоторые значения для определенных атрибутов ..
источник