Програмирането с Python ти открива много възможности, които надхвърлят простите скриптове. Централна компонента в обектно-ориентираното програмиране е работата с класове. Те формират основата за обекти и ти позволяват да създаваш и управляваш сложни структури от данни. В това ръководство ще научиш как да дефинираш собствени класове в Python, за да използваш ефективно техните свойства и методи.
Най-важни Erkenntnisse
- Класовете са ключът към обектно-ориентираното програмиране в Python.
- Инициализатор (конструктор) ти позволява да дефинираш специфични свойства, когато създаваш клас.
- Методите в класовете ти позволяват да капсулираш функции, които работят с свойствата на обект.
- Достъпът до свойства става чрез оператора точка.
Стъпка по стъпка ръководство
Нека започнем с основите на изграждането на класове в Python. Първо, трябва да дефинираш нов клас с ключовата дума class. Можеш да направиш това в своя Python код, както следва:

Тук имаме един празен клас, наречен Служител. Можеш да го дефинираш първоначално без параметри, което означава, че класът се създава без специфична инициализация. Това е важна основа, за да се увериш, че по-късно няма да получиш грешки при създаване на обекти.
Сега създай обект от този клас. За това просто е да използваш името на класа и да поставиш празни скоби:
В този случай имаме обект Служител, който току-що създадохме. Следващата стъпка е да разширим класа със свойства. Например можеш да добавиш име на класа Служител.
Първо трябва да дефинираш инициализатор, който служи като конструктор на класа ти. Това става чрез метода __init__.

Тук виждаш как се дефинира конструктор __init__. Предаваме името като параметър и използваме self, за да съхраним името за текущия обект.
Сега, след като имаш свойство, можеш да предаваш име директно при създаването на обект:

Ако сега създадеш обекта участник с името "Ян", името ще бъде съхранено в инстанцията. Чрез автоматично допълване можеш да провериш дали името е зададено правилно.
За да използваш свойствата, можеш да ги извикаш с помощта на оператора точка:

Тук е моментът, в който можеш да получиш достъп до свойствата на обекта си. В този случай отпечатваш името на участника.
Приложимо към свойствата, можеш също да имплементираш методи. Създаването на метод работи по подобен начин като дефинирането на функция:

Тук дефинираш метода записване. Отново забележи, че self автоматически се предава като параметър на метода, за да получиш достъп до инстанцията. При записването можехме, например, да отпечатаме съобщение за успех:

Когато извикаш метода записване, той изглежда по следния начин:

Тук извикваш метода на инстанцията участник, което дава обратна връзка за записването.
Накрая можем също да предаваме параметри на методите, подобно на функциите. Например, метод за отписване, който очаква параметър за предсрочно отписване:

Тук анализираш дали участникът иска да се откаже предсрочно и отпечатваш съответно съобщение.
ScreenShot_320
Това ти показва колко интерактивни могат да станат твоите класове и методи и как реагират на входове.
Накрая трябва да обобщим основните принципи, които сме научили. Дефиницията на класове се състои в дефинирането на атрибути и методи, които са релевантни за съответните обекти. Конструкторът __init__ е от ключово значение за задаване на атрибутите при създаването на обекта.
Обобщение – Създаване и използване на собствени класове в Python
Чрез разбирането и прилагането на тези основни принципи можеш да разработиш мощни и гъвкави програми на Python. Можеш да създаваш класове, които капсулират специфични функции и свойства, за да направиш програмирането по-потребителски удобно и ефективно.
Често задавани въпроси
Как да дефинирам клас в Python?Използвай ключовата дума class, последвана от името на класа и двоеточие.
Каква е целта на конструктора __init__?Той се използва за инициализации при създаването на обект.
Как да получа достъп до свойства на обект?Използвай оператора точка, последван от името на свойството, напр. обект.свойство.
Мога ли да предам няколко параметра на метод?Да, можеш да дефинираш методи, които приемат няколко параметра.
Мога ли да използвам функции в класовете си?Да, методите не са нищо друго освен функции, които са обвързани с клас.