You are currently viewing Концепции Python OOPs

Концепции Python OOPs

В Python объектно-ориентированное программирование (OOPs) — это парадигма программирования, которая использует объекты и классы в программировании. Он направлен на реализацию в программировании объектов реального мира, таких как наследование, полиморфизмы, инкапсуляция и т.д. Основная концепция OOPs заключается в том, чтобы связать данные и функции, которые работают с ними, в единое целое, чтобы никакая другая часть кода не могла получить доступ к этим данным.

Основные понятия объектно-ориентированного программирования (ООП)

  • Класс
  • Объекты
  • Полиморфизм
  • Инкапсуляция
  • Наследование

Класс

Класс — это набор объектов. Класс содержит чертежи или прототип, на основе которых создаются объекты. Это логическая сущность, содержащая некоторые атрибуты и методы.

Чтобы понять необходимость создания класса, давайте рассмотрим пример, допустим, вы хотели отследить количество собак, которые могут иметь разные атрибуты, такие как порода, возраст. Если используется список, то первым элементом может быть порода собаки, в то время как второй элемент может представлять ее возраст. Давайте предположим, что существует 100 разных собак, тогда как бы вы узнали, какой элемент должен быть каким? Что, если бы вы хотели добавить этим собакам другие свойства? Здесь не хватает организации, и это как раз то, что нужно для занятий.

Некоторые моменты в классе Python:  

  • Классы создаются по ключевому слову class.
  • Атрибуты-это переменные, принадлежащие классу.
  • Атрибуты всегда являются общедоступными и могут быть доступны с помощью оператора точки (.). Например: Myclass.Мой атрибут

Синтаксис определения класса:

class ClassName:
 # Statement-1
 .
 .
 .
 # Statement-N

Пример: Создание пустого класса в Python

# Python3 program to
# demonstrate defining
# a class

class Dog:
	pass

В приведенном выше примере мы создали класс с именем dog, используя ключевое слово class.

Объекты

Объект-это сущность, с которой связаны состояние и поведение. Это может быть любой реальный объект, такой как мышь, клавиатура, стул, стол, ручка и т. Д. Целые числа, строки, числа с плавающей запятой, четные массивы и словари-все это объекты. Более конкретно, любое отдельное целое число или любая отдельная строка является объектом. Число 12-это объект, строка “Привет, мир” — это объект, список-это объект, который может содержать другие объекты, и так далее. Вы все время использовали объекты и, возможно, даже не осознавали этого.

Объект состоит из :

  • Состояние: Оно представлено атрибутами объекта. Он также отражает свойства объекта.
  • Поведение: Оно представлено методами объекта. Он также отражает реакцию объекта на другие объекты.
  • Идентичность: Он дает уникальное имя объекту и позволяет одному объекту взаимодействовать с другими объектами.

Чтобы понять состояние, поведение и идентичность, давайте возьмем пример классовой собаки (объясненной выше).

  • Идентификацией можно считать имя собаки.
  • Состояние или атрибуты могут рассматриваться как порода, возраст или окрас собаки.
  • Поведение можно рассматривать как то, ест ли собака или спит.

Пример: Создание объекта

obj = Dog()

Это создаст объект с именем obj класса Dog, определенного выше. Прежде чем углубляться в объекты и классы, давайте разберемся в некоторых основных ключевых словах, которые мы будем использовать при работе с объектами и классами.

Самость  

  1. Методы класса должны иметь дополнительный первый параметр в определении метода. Мы не указываем значение этого параметра при вызове метода, его предоставляет Python
  2. Если у нас есть метод, который не принимает аргументов, то у нас все равно должен быть один аргумент.
  3. Это похоже на этот указатель в C++ и эту ссылку в Java.

Когда мы вызываем метод этого объекта как myobject.method(arg1, arg2), он автоматически преобразуется Python в MyClass.method(myobject, arg1, arg2) – это все, что касается специального self.

Примечание: Для получения дополнительной информации.

Метод  __init__ 

То __init__ method аналогичен конструкторам в C++ и Java. Он запускается, как только создается экземпляр объекта класса. Этот метод полезен для выполнения любой инициализации, которую вы хотите выполнить с вашим объектом.

Теперь давайте определим класс и создадим некоторые объекты, используя метод self и __init__.

Пример 1. Создание класса и объекта с атрибутами класса и экземпляра

class Dog:

	# class attribute
	attr1 = "mammal"

	# Instance attribute
	def __init__(self, name):
		self.name = name

# Driver code
# Object instantiation
Rodger = Dog("Rodger")
Tommy = Dog("Tommy")

# Accessing class attributes
print("Rodger is a {}".format(Rodger.__class__.attr1))
print("Tommy is also a {}".format(Tommy.__class__.attr1))

# Accessing instance attributes
print("My name is {}".format(Rodger.name))
print("My name is {}".format(Tommy.name))

Выход:

Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy 

Пример 2. Создание класса и объектов с помощью методов

class Dog:

	# class attribute
	attr1 = "mammal"

	# Instance attribute
	def __init__(self, name):
		self.name = name
		
	def speak(self):
		print("My name is {}".format(self.name))

# Driver code
# Object instantiation
Rodger = Dog("Rodger")
Tommy = Dog("Tommy")

# Accessing class methods
Rodger.speak()
Tommy.speak()

Выход:

My name is Rodger My name is Tommy 

Примечание: Для получения дополнительной информации см. Классы и объекты Python

Наследование

Наследование-это способность одного класса выводить или наследовать свойства из другого класса. Класс, производящий свойства, называется производным классом или базовым классом, а класс, из которого выводятся свойства, называется базовым классом или родительским классом. Преимущества наследования заключаются в следующем:

  • Он хорошо отражает отношения в реальном мире.
  • Это обеспечивает возможность повторного использования кода. Нам не нужно снова и снова писать один и тот же код. Кроме того, это позволяет нам добавлять дополнительные функции в класс, не изменяя его.
  • Он носит транзитивный характер, что означает, что если класс B наследуется от другого класса A, то все подклассы B автоматически наследуются от класса A.

Пример: Наследование в Python

# Python code to demonstrate how parent constructors
# are called.

# parent class
class Person(object):

	# __init__ is known as the constructor
	def __init__(self, name, idnumber):
		self.name = name
		self.idnumber = idnumber

	def display(self):
		print(self.name)
		print(self.idnumber)
		
	def details(self):
		print("My name is {}".format(self.name))
		print("IdNumber: {}".format(self.idnumber))
	
# child class
class Employee(Person):
	def __init__(self, name, idnumber, salary, post):
		self.salary = salary
		self.post = post

		# invoking the __init__ of the parent class
		Person.__init__(self, name, idnumber)
		
	def details(self):
		print("My name is {}".format(self.name))
		print("IdNumber: {}".format(self.idnumber))
		print("Post: {}".format(self.post))


# creation of an object variable or an instance
a = Employee('Rahul', 886012, 200000, "Intern")

# calling a function of the class Person using
# its instance
a.display()
a.details()

Выход:

Rahul
886012
My name is Rahul
IdNumber: 886012
Post: Intern

В приведенной выше статье мы создали два класса: Person (родительский класс) и Employee (Дочерний класс). Класс Employee наследуется от класса Person. Мы можем использовать методы класса person через класс employee, как показано в функции отображения в приведенном выше коде. Дочерний класс также может изменять поведение родительского класса, как показано в методе details ().

Примечание: Для получения дополнительной информации обратитесь к нашему Наследование в Python.

Полиморфизм

Полиморфизм просто означает наличие множества форм. Например, нам нужно определить, летают ли данные виды птиц или нет, используя полиморфизм, мы можем сделать это с помощью одной функции.

Пример: Полиморфизм в Python

class Bird:
	
	def intro(self):
		print("There are many types of birds.")

	def flight(self):
		print("Most of the birds can fly but some cannot.")

class sparrow(Bird):
	
	def flight(self):
		print("Sparrows can fly.")

class ostrich(Bird):

	def flight(self):
		print("Ostriches cannot fly.")

obj_bird = Bird()
obj_spr = sparrow()
obj_ost = ostrich()

obj_bird.intro()
obj_bird.flight()

obj_spr.intro()
obj_spr.flight()

obj_ost.intro()
obj_ost.flight()

Выход:

There are many types of birds.
Most of the birds can fly but some cannot.
There are many types of birds.
Sparrows can fly.
There are many types of birds.
Ostriches cannot fly.

Примечание: Для получения дополнительной информации обратитесь к нашему учебнику по полиморфизму в Python.

Инкапсуляция

Инкапсуляция-одна из фундаментальных концепций объектно-ориентированного программирования (ООП). В нем описывается идея упаковки данных и методы, которые работают с данными в рамках одного блока. Это накладывает ограничения на прямой доступ к переменным и методам и может предотвратить случайное изменение данных. Чтобы предотвратить случайное изменение, переменная объекта может быть изменена только методом объекта. Эти типы переменных известны как частные переменные.

Класс является примером инкапсуляции, поскольку он инкапсулирует все данные, которые являются функциями-членами, переменными и т. д.

Пример: Инкапсуляция в Python

# Python program to
# demonstrate private members

# Creating a Base class
class Base:
	def __init__(self):
		self.a = "ProgramBox"
		self.__c = "ProgramBox"

# Creating a derived class
class Derived(Base):
	def __init__(self):

		# Calling constructor of
		# Base class
		Base.__init__(self)
		print("Calling private member of base class: ")
		print(self.__c)


# Driver code
obj1 = Base()
print(obj1.a)

# Uncommenting print(obj1.c) will
# raise an AttributeError

# Uncommenting obj2 = Derived() will
# also raise an AtrributeError as
# private member of base class
# is called inside derived class

Выход:

ProgramBox

В приведенном выше примере мы создали переменную c в качестве закрытого атрибута. Мы даже не можем получить прямой доступ к этому атрибуту и даже не можем изменить его значение.

Примечание: для получения дополнительной информации обратитесь к нашему Инкапсуляция в Python.

Объектно-ориентированное программирование на Python | Набор 2 (Скрытие данных и печать объектов)