Объектно-ориентированное программирование на Python

В этом руководстве вы узнаете об объектно-ориентированном программировании (ООП) в Python и его фундаментальной концепции с помощью примеров.

Видео: объектно-ориентированное программирование на Python

Объектно-ориентированного программирования

Python - это язык программирования с несколькими парадигмами. Он поддерживает разные подходы к программированию.

Один из популярных подходов к решению проблемы программирования - создание объектов. Это известно как объектно-ориентированное программирование (ООП).

У объекта есть две характеристики:

  • атрибуты
  • поведение

Возьмем пример:

Попугай может быть объектом, поскольку обладает следующими свойствами:

  • имя, возраст, цвет как атрибуты
  • пение, танцы как поведение

Концепция ООП в Python направлена ​​на создание повторно используемого кода. Эта концепция также известна как СУХОЙ (Не повторяйся).

В Python концепция ООП следует некоторым основным принципам:

Класс

Класс - это план объекта.

Мы можем представить себе класс как набросок попугая с ярлыками. Он содержит все подробности о имени, цвете, размере и т. Д. Основываясь на этих описаниях, мы можем изучить попугая. Здесь попугай - это объект.

Примером класса попугай может быть:

 class Parrot: пройти

Здесь мы используем classключевое слово для определения пустого класса Parrot. Из класса мы создаем экземпляры. Экземпляр - это конкретный объект, созданный из определенного класса.

Объект

Объект (экземпляр) - это реализация класса. Когда класс определен, определяется только описание объекта. Следовательно, память или хранилище не выделяются.

Примером объекта класса parrot может быть:

 obj = Попугай ()

Здесь obj - это объект класса Parrot.

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

Пример 1: Создание класса и объекта в Python

 class Parrot: # class attribute species = "bird" # instance attribute def __init__(self, name, age): self.name = name self.age = age # instantiate the Parrot class blu = Parrot("Blu", 10) woo = Parrot("Woo", 15) # access the class attributes print("Blu is a ()".format(blu.__class__.species)) print("Woo is also a ()".format(woo.__class__.species)) # access the instance attributes print("() is () years old".format( blu.name, blu.age)) print("() is () years old".format( woo.name, woo.age))

Вывод

 Blu - это птица, Woo - тоже птица. Blu - 10 лет. Woo - 15 лет.

В приведенной выше программе мы создали класс с именем Parrot. Затем мы определяем атрибуты. Атрибуты - это характеристика объекта.

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

Затем мы создаем экземпляры класса Parrot. Здесь blu и woo - ссылки (значения) на наши новые объекты.

Мы можем получить доступ к атрибуту класса, используя __class__.species. Атрибуты класса одинаковы для всех экземпляров класса. Точно так же мы получаем доступ к атрибутам экземпляра, используя blu.nameи blu.age. Однако атрибуты экземпляра различны для каждого экземпляра класса.

Чтобы узнать больше о классах и объектах, перейдите в раздел Классы и объекты Python.

Методы

Методы - это функции, определенные внутри тела класса. Они используются для определения поведения объекта.

Пример 2: Создание методов в Python

 class Parrot: # instance attributes def __init__(self, name, age): self.name = name self.age = age # instance method def sing(self, song): return "() sings ()".format(self.name, song) def dance(self): return "() is now dancing".format(self.name) # instantiate the object blu = Parrot("Blu", 10) # call our instance methods print(blu.sing("'Happy'")) print(blu.dance())

Вывод

 Blu поет Happy Blu танцует

В приведенной выше программе мы определяем два метода, т.е. sing()и dance(). Они называются методы экземпляра , так как они называются на экземпляр объекта , т.е. blu.

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

Inheritance is a way of creating a new class for using details of an existing class without modifying it. The newly formed class is a derived class (or child class). Similarly, the existing class is a base class (or parent class).

Example 3: Use of Inheritance in Python

 # parent class class Bird: def __init__(self): print("Bird is ready") def whoisThis(self): print("Bird") def swim(self): print("Swim faster") # child class class Penguin(Bird): def __init__(self): # call super() function super().__init__() print("Penguin is ready") def whoisThis(self): print("Penguin") def run(self): print("Run faster") peggy = Penguin() peggy.whoisThis() peggy.swim() peggy.run()

Output

 Bird is ready Penguin is ready Penguin Swim faster Run faster

In the above program, we created two classes i.e. Bird (parent class) and Penguin (child class). The child class inherits the functions of parent class. We can see this from the swim() method.

Again, the child class modified the behavior of the parent class. We can see this from the whoisThis() method. Furthermore, we extend the functions of the parent class, by creating a new run() method.

Additionally, we use the super() function inside the __init__() method. This allows us to run the __init__() method of the parent class inside the child class.

Encapsulation

Using OOP in Python, we can restrict access to methods and variables. This prevents data from direct modification which is called encapsulation. In Python, we denote private attributes using underscore as the prefix i.e single _ or double __.

Example 4: Data Encapsulation in Python

 class Computer: def __init__(self): self.__maxprice = 900 def sell(self): print("Selling Price: ()".format(self.__maxprice)) def setMaxPrice(self, price): self.__maxprice = price c = Computer() c.sell() # change the price c.__maxprice = 1000 c.sell() # using setter function c.setMaxPrice(1000) c.sell()

Output

 Selling Price: 900 Selling Price: 900 Selling Price: 1000

In the above program, we defined a Computer class.

We used __init__() method to store the maximum selling price of Computer. We tried to modify the price. However, we can't change it because Python treats the __maxprice as private attributes.

As shown, to change the value, we have to use a setter function i.e setMaxPrice() which takes price as a parameter.

Polymorphism

Polymorphism is an ability (in OOP) to use a common interface for multiple forms (data types).

Suppose, we need to color a shape, there are multiple shape options (rectangle, square, circle). However we could use the same method to color any shape. This concept is called Polymorphism.

Example 5: Using Polymorphism in Python

 class Parrot: def fly(self): print("Parrot can fly") def swim(self): print("Parrot can't swim") class Penguin: def fly(self): print("Penguin can't fly") def swim(self): print("Penguin can swim") # common interface def flying_test(bird): bird.fly() #instantiate objects blu = Parrot() peggy = Penguin() # passing the object flying_test(blu) flying_test(peggy)

Output

 Parrot can fly Penguin can't fly

In the above program, we defined two classes Parrot and Penguin. Each of them have a common fly() method. However, their functions are different.

Чтобы использовать полиморфизм, мы создали общий интерфейс, т.е. flying_test()функцию, которая принимает любой объект и вызывает метод объекта fly(). Таким образом, когда мы передали в flying_test()функцию объекты blu и peggy , она работала эффективно.

Ключевые моменты, о которых следует помнить:

  • Объектно-ориентированное программирование делает программу простой и эффективной для понимания.
  • Поскольку класс является разделяемым, код можно использовать повторно.
  • Данные безопасны и надежны благодаря абстракции данных.
  • Полиморфизм позволяет использовать один и тот же интерфейс для разных объектов, поэтому программисты могут писать эффективный код.

Интересные статьи...