Часто при разработке программ на Python возникает ситуация, когда необходимо создать несколько конструкторов для одного класса. Это может быть полезно, например, когда у класса есть несколько полей, и нужно предоставить различные способы инициализации этих полей.
Рассмотрим пример. Пусть имеется класс Book
, у которого есть свойства title
и author
. В некоторых случаях вам может потребоваться создать книгу, указав оба этих свойства. В других случаях вы может хотеть создать книгу без автора.
В Python метод __init__
класса выступает в роли конструктора, однако Python не поддерживает несколько методов __init__
в одном классе. В таком случае обычный подход — использовать значения по умолчанию для аргументов конструктора.
class Book: def __init__(self, title, author=None): self.title = title self.author = author
В этом примере, если при создании объекта класса Book
не указывается автор, то свойство author
автоматически получает значение None
.
book1 = Book("War and Peace", "Leo Tolstoy") book2 = Book("1984")
В данном случае, книга book1
будет создана с указанным автором, а книга book2
– без автора.
Это наиболее часто используемый подход для реализации «нескольких конструкторов» в Python. Он прост, чист и «pythonic».
Добавить комментарий