Тази статия ще помогне на читателя да разбере основните класове на Python, заедно с някои основни приложения в реалния свят. Ще използваме Visual Studio Code като наш редактор на код. Ако не сте инсталирали Visual Studio Code, инструкциите са дадени в първия блог.

Класове и обекти в Python – съдържание:

  1. Класове в Python
  2. Класове в Python – дефиниция
  3. Инициализация на класове в Python
  4. Нека напишем нашия първи клас в Python
  5. Атрибути
  6. Поведение на класа
  7. Обекти в Python
  8. Наследяване

Класове в Python

Както обсъдихме в първия блог, Python е обектно-ориентиран език за програмиране. Има три фрази, които са много важни при обсъждането на обектно-ориентираното програмиране в Python. Първата е клас, втората е обект, а третата е наследяване. Нека започнем с това какво е клас.

Класове в Python – дефиниция

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

Инициализация на класове в Python

Клас може да бъде инициализиран, използвайки следния синтаксис.

Клас в Python се дефинира с ключовата дума “class”, следвана от името на класа. Основният синтаксис на функция в Python е илюстриран по-долу.

Например:

<img src="https://firmbee.com/wp-content/uploads/Python_9-800x600.png" alt="Python_classes" width="800" height="600" class="alignnone size-medium wp-image-21409 img-fluid" />
# Създаване на функция
# клас Маймуна
class classname:

Забележка: името на класа също следва същите норми като декларацията на променливата.

Нека напишем нашия първи клас в Python

# първи клас

class Animals:
	pass

В горния кодов блок написахме клас, който ще развиваме по-нататък в блога. Както виждате, използвахме ключовата дума “class”.

Нека сега видим как да добавим компоненти към класа на животните. Но преди това нека научим за конструктора “__init__()”. Конструкторите се използват за инстанциране на обекти. Тук __init__() се използва за инстанциране на обекти. Конструкторът може да бъде по подразбиране с единствено self като аргумент или параметризиран с необходимите аргументи.

Атрибути

Има два различни типа атрибути, първите са класови променливи, а вторите са инстанционни променливи. Класовите променливи са променливите, които принадлежат на класа. Освен това, тези променливи са налични за всички инстанции на класа. Следователно, тяхната стойност няма да се промени, дори ако инстанцията се промени.

# класови променливи

class Animals:
	type=”млекопитаещи”

Инстанционните променливи са променливите, които принадлежат на самите инстанции. Следователно, те ще променят стойността си, когато инстанцията се промени.

# класови променливи

class Animals:
	def __init__(self,legs):
		self.legs=legs
		

Забележка: Инстанционните променливи не са налични за достъп чрез името на класа, защото те се променят в зависимост от обекта, който ги достъпва.

Нека направим програма, която има декларирани както класови, така и инстанционни променливи.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	

В горната програма използвахме както инстанционни, така и класови променливи. Така че, тези променливи образуват атрибути на класа.

Поведение на класа

Както обсъдихме, поведението на класа се определя от методите вътре в класа. Но преди да преминем към обсъждането на поведението, трябва да започнем да обсъждаме параметъра “self”, който използвахме в __init__().

Self:

С много прости думи, когато прикрепим нещо към self, това означава, че променливата или функцията принадлежи на този клас. Също така, с “self”, атрибутите или методите на класа могат да бъдат достъпвани.

Методи:

Класовите методи са функции вътре в класа, които ще имат първия си аргумент като “self”. Метод вътре в класа се дефинира с ключовата дума “def”.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)
 

В горния метод “bark”, тъй като използваме променливата name, която е инстанционна променлива, ние я достъпваме с “self” и тази функция ще отпечата “гав-гав!!!”, само ако името, предоставено на обекта, е куче.

Обсъдихме повечето от компонентите на класа, но може би се чудите как да видите дали класът работи. Отговорът на това е, че освен ако не създадем обект на класа, няма да можем да видим какво прави класът. Сега, нека дефинираме и създадем обект на класа.

Обекти в Python

Обектът е инстанция на класа. Класът е просто план, но обектът е инстанция на класа, която има действителни стойности.

Кодът за дефиниране или създаване на обект е илюстриран по-долу.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)
 
dog=Animals(“dog”,4)
 

За да създадете обект, синтаксисът е objectname=classname(arguments). Следователно, тук даваме името на животното да бъде куче и броя на краката да бъде 4. Сега, обектът на класа е създаден, следващата стъпка е да използваме обекта, за да достъпим неговите атрибути. За да достъпим атрибутите на класа, използвайки обекта, запомнете, че само инстанционните променливи могат да бъдат достъпвани с помощта на обекта. Инстанционните променливи в нашия клас са name и legs.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)
 
dog=Animals(“dog”,4)
print(dog.name)
print(dog.legs)
 

Както виждаме, можем да достъпим инстанционните променливи, използвайки точкова нотация.

Нека разгледаме изхода.

#Изход

dog
4

За да достъпим функциите вътре в класа или методите, ще използваме точкова нотация. Примерът е илюстриран по-долу.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)
 
dog=Animals(“dog”,4)
print(dog.name)
print(dog.legs)
print(dog.bark())
#Изход

dog
4
гав-гав!!!

В горния пример виждаме, че достъпваме класовия метод “bark” с помощта на обекта dog, който създадохме. Можем да видим, че не използваме параметъра “self” в аргументите на функцията. Това е така, защото не се изисква използването на “self” извън класа, тъй като самият обект действа като self.

Наследяване

Наследяването е процес, чрез който атрибутите и методите на класа могат да бъдат предадени на дъщерен клас. Класът, от който дъщерният клас наследява, е родителският клас. Синтаксисът за наследяване е илюстриран по-долу.

#Наследяване

class parent:

class child(parent):

От горната илюстрация можем да видим, че за синтаксиса на наследяване поставяме името на родителския клас като аргумент на дъщерния клас. Нека използваме класа Animals и направим дъщерен клас, наречен куче. Това е илюстрирано по-долу.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)

class Dog(Animals):
	def __init__(self,name,legs,breed):
		Animals.__init__(self,name,legs)
		self.breed=breed

В горния примерен код направихме клас куче, който разширява класа животни, който създадохме преди. Също така използваме параметрите от Animals, използвайки Animals.__init__(arguments), които имат name и legs, които ще бъдат наследени от класа куче. След това създаваме инстанционен атрибут за класа куче, който е breed.

Сега нека направим обект за класа куче и достъпим атрибутите и методите на класа животни.

class Animals:
	type=”млекопитаещи”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“гав-гав!!!”)
		else:
			print(“не е куче”)

class Dog(Animals):
	def __init__(self,name,legs,breed):
		Animals.__init__(self,name,legs)
		self.breed=breed

pug=Dog("dog",4,"pug")
pug.breed
pug.name
pug.legs
pug.bark()
#Изход

pug
dog
4
гав-гав!!!

Както виждаме от изхода, атрибутите и методите на родителския клас се достъпват от обекта на дъщерния клас.

В този блог покрихме някои основи на класовете в Python. В следващия блог пост ще разгледаме темата за работа с файлове.

python_classes

Може да ви хареса и нашият Курс по JavaScript от начинаещ до напреднал.

Robert Whitney

Експерт по JavaScript и инструктор, който обучава ИТ отдели. Основната му цел е да повиши продуктивността на екипа, като учи другите как да си сътрудничат ефективно при програмирането.

View all posts →

Python Course From Beginner to Advanced in 11 blog posts:

  1. Питон кортежи, списъци, множества и речници. Част 3 от курса по Питон от начинаещ до напреднал в 11 публикации в блога
  2. Функции в Python. Част 7 от курса по Python за начинаещи до напреднали в 11 публикации в блога
  3. Въведение в курса по Python. Част 1 Курс по Python от начинаещ до напреднал в 11 блог поста
  4. Променливи и типове данни в Python. Част 2 от курса по Python за начинаещи до напреднали в 11 блог поста
  5. Питон множества и речници. Част 4 от курса по Питон за начинаещи до напреднали в 11 блог поста
  6. Питон класове и обекти. Част 9 Питон курс от начинаещ до напреднал в 11 блог поста
  7. Файлове в Python. Част 10 от курса по Python от начинаещ до напреднал в 11 публикации в блог.
  8. Цикли в Python. Част 6 от курса по Python от начинаещ до напреднал в 11 блог поста
  9. Разширени функции в Python. Част 8 от курса по Python от начинаещ до напреднал в 11 блог публикации