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

Содержание

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

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

ООП

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

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

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

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

Рассмотрим пример. Допустим, наш объект — это попугай. У попугая есть такие свойства:

  • Имя, возраст, цвет. Это атрибуты.
  • То, как попугай поет и танцует. Это поведение

ООП предлагает писать код, который можно использовать повторно. Такой принцип называется DRY (don’t repeat yourself, «не повторяйся»).

Класс

Класс — это шаблон объекта.

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

Давайте создадим класс, который описывает попугая: 

class Parrot:
    pass

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

Объект

Объект — это экземпляр класса. Объявленный класс — это лишь описание объекта: ему не выделяется память. 

Например, экземпляра класса Parrot будет выглядеть так:

# obj — экземпляр класса Parrot
obj = Parrot()

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

# Создаем класс и его объекты
class Parrot:

    # атрибуты класса
    species = "птица"

    # атрибуты экземпляра
    def __init__(self, name, age):
        self.name = name
        self.age = age

# создаем экземпляра класса
kesha = Parrot("Кеша", 10)
cookie = Parrot("Куки", 15)

# получаем доступ к атрибутам класса
print("Кеша — {}".
format(kesha.__class__.species)) print("Куки тоже {}".format(cookie.__class__.species)) # получаем доступ к атрибутам экземпляра print("{} — {}-летний попугай".format(kesha.name, kesha.age)) print("{} — {} летний попугай".format(cookie.name, cookie.age))

Вывод:

Кеша — птица
Куки тоже птица
Кеша — 10-летний попугай Куки — 15-летний попугай

Мы создали класс Parrot. После этого мы объявили атрибуты — характеристики объекта.

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

После этого мы создаем экземпляры класса Parrot. kesha и cookie — ссылки на (значения) наши новые объекты. 

Получить доступ к атрибуту класса можно так —

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

Подробнее о классах и объектах.

Методы

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

# Создаем метод
class Parrot:
    
    # атрибуты экземпляра
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # метод экземпляра
    def sing(self, song):
        return "{} поет {}".format(self.name, song)

    def dance(self):
        return "{} танцует".format(self.name)

# создаем экземпляр класса
kesha = Parrot("Кеша", 10)

# вызываем методы экземпляра
print(kesha.sing("песенки"))
print(kesha.dance())

Вывод:

Кеша поет песенки
Кеша танцует

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

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

Наследование — способ создания класса. Его суть заключается в том, что функциональность нового класса наследуются от уже существующего класса. Новый класс называется производным (дочерним). Существующий — базовым (родительским).

# родительский класс
class Bird:
    
    def __init__(self):
        print("Птица готова")

    def whoisThis(self):
        print("Птица")

    def swim(self):
        print("Плывет быстрее")

# дочерний класс
class Penguin(Bird):

    def __init__(self):
        # вызов функции super() 
        super().__init__()
        print("Пингвин готов")

    def whoisThis(self):
        print("Пингвин")

    def run(self):
        print("Бежит быстрее")

peggy = Penguin()
peggy.
whoisThis() peggy.swim() peggy.run()

Вывод:

Птица готова
Пингвин готов
Пингвин
Плывет быстрее
Бежит быстрее

В этой программе мы создаем два класса — Bird (родительский) и Penguin (дочерний). Дочерний класс наследует функции родительского. Это вы можете заметить по методу swim().

Но и дочерний класс изменяет функциональность родительского. Это можно заметить по методу

whoisThis(). Более того, мы расширяем функциональность родительского класса — создаем метод run().

Также мы используем функцию super() внутри метода __init__(). Это позволяет запускать метод __init__() родительского класса внутри дочернего.

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

Мы можем ограничить доступ к методам и переменным, что предотвратит модификацию данных — это и есть инкапсуляция. Приватные атрибуты выделяются нижним подчеркиванием: одинарным _ или двойным __.  

# Используем инкапсуляцию данных
class Computer:

    def __init__(self):
        self.__maxprice = 900

    def sell(self):
        print("Цена продажи: {}".format(self.__maxprice))

    def setMaxPrice(self, price):
        self.__maxprice = price

c = Computer()
c.sell()

# изменение цены
c.__maxprice = 1000
c.sell()

# используем функцию изменения цены
c.setMaxPrice(1000)
c.sell()

 Вывод:

Цена продажи: 900
Цена продажи: 900
Цена продажи: 1000

Мы объявили класс Computer

Затем мы использовали метод __init__() для хранения максимальной цены компьютера. Затем мы попытались изменить цену — безуспешно: Python воспринимает __maxprice как приватный атрибут. 

Как видите, для изменения цены нам нужно использовать специальную функцию — setMaxPrice(), которая принимает цену в качестве параметра.

Полиморфизм

Полиморфизм — особенность ООП, позволяющая использовать одну функцию для разных форм (типов данных).

Допустим, нам нужно закрасить фигуру. Их форма может быть любой: прямоугольник, квадрат, круг. Одним и тем же методом мы можем раскрасить любую фигуру. Такой принцип и называется полиморфизмом.

# Используем полиморфизм
class Parrot:

    def fly(self):
        print("Попугай умеет летать")
    
    def swim(self):
        print("Попугай не умеет плавать")

class Penguin:

    def fly(self):
        print("Пингвин не умеет летать")
    
    def swim(self):
        print("Пингвин умеет плавать")

# общий интерфейс 
def flying_test(bird):
    bird.fly()

# создаем экземпляров класса
kesha = Parrot()
peggy = Penguin()

# передача объектов в качестве аргумента
flying_test(kesha)
flying_test(peggy)

Вывод:

Попугай умеет летать
Пингвин не умеет летать

В этой программе мы объявили два класса:

Parrot и Penguin. В каждом из них описан общий метод fly(). Но функции у них разные. 

Для использование полиморфизма мы создали общий интерфейс — функцию flying_test(). В качестве аргумента она принимает любой объект, после чего происходит вызов его собственного метода fly()

Что нужно запомнить:

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

DEV-PY200. Объектно-ориентированное программирование на языке Python

  • О переподготовке
  • Программы
  • Онлайн
  • Поступающим
  • Стоимость
  • Документы
  • Личный кабинет
О переподготовке Программы Онлайн Поступающим Расписание Личный кабинет

Длительность дисциплины: 44 ак. ч.


Аннотация

Курс DEV-PY200. Объектно-ориентированное программирование на языке Python направлен на изучение принципов объектно-ориентированного подхода при разработке приложений с использованием языка программирования Python.

Курс является логическим продолжением базовых курсов по процедурному программированию на языке Python.

Основные задачи курса:

  • Введение понятия методов и переменных объекта;
  • Изучение базовых концепций объектно-ориентированного программирования на языке Python»: инкапсуляция, наследование и полиморфизм;
  • Перегрузка «магических» методов.

Курс DEV-PY200. Объектно-ориентированное программирование на языке Python позволяет совместно с курсами:
DEV-PY100. Основы процедурного программирования на языке Python
DEV-PY110. Процедурное программирование на языке Python (расширенный курс)
подготовиться к сертификации PCAP – Certified Associate in Python Programming.


Знания и умения, полученные в результате изучения

В результате освоения программы обучающийся должен уметь:
• создавать посредством классов пользовательские типы данных для решения конкретных задач;
• создавать и использовать пользовательские исключения;
• создавать объекты-генераторы;
• использовать декораторы классов и функций;
• осуществлять перегрузку операторов.

В результате освоения программы, обучающийся должен знать:
• базовые понятия объектно-ориентированного программирования;
• отличия процедурных и объектно-ориентированных языков программирования высокого уровня;
• понятия инкапсуляции, наследования и полиморфизма;
• возможности использования классов для решения практических задач.

В результате освоения программы обучающийся должен приобрести практический опыт:
• создания пользовательских классов на базе языка программирования Python;
• планирования собственной деятельности по реализации простых классов.


Преподаватели

  • Городецкая Светлана Ивановна
  • Кулёв Валентин Николаевич
  • Сельский Виктор .
  • Харченко Владислав Алексеевич

Содержание дисциплины

Тема 1. Основы объектно-ориентированного программирования

  • Базовые понятия объектно-ориентированного программирования.
  • Класс и экземпляр класса.
  • Атрибуты класса. Атрибуты экземпляра класса.
  • Классы «нового типа».

Практические занятия:

  • Создание простого класса.
  • Создание экземпляра класса.
  • Создание класса, использующего различные типы атрибутов.

Тема 2. Инкапсуляция, наследование и полиморфизм

  • Инкапсуляция.
  • Наследование.
  • Полиморфизм.
  • Перегрузка «магических» методов.

Практические занятия:

  • Написание класса на основе базового класса.
  • Переопределение методов базового класса.

Тема 3. Разработка пользовательских Exception’ов

  • Особенности использования исключений.
  • Объекты исключений. Использование исключений.

Практические занятия:

  • Работа со встроенными исключениями.
  • Создание пользовательского класса исключений.
  • Использование вложенных обработчиков исключений.

Тема 4. Дополнительные возможности классов

  • Юнит-тесты

Практические занятия:

  • Разработка пользовательских тест-кейсов
  • Использование проверок на успешность базового тест-кейса

Тема 5. Дополнительные возможности классов

  • Расширение встроенных типов.
  • Декораторы классов.
  • Типичные проблемы при работе с классами.

Практические занятия:

  • Простой декоратор проверки значений позиционных аргументов на вхождение в заданный диапазон.
  • Применение декораторов к методам.

Python OOP Concepts — GeeksforGeeks

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

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

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

OOPS

Класс

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

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

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

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

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

 class ClassName:
   # Заявление-1
   . 
   .
   .
   # Заявление-N 

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

Python

Класс DOG:

PASS

В примере вышеуказанный пример, мы создали класс по имени.

Объекты

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

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

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

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

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

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

Python3

OBJ = DOG ()

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

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

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

Примечание: Дополнительные сведения см. в разделе self в классе Python. Он запускается, как только создается экземпляр объекта класса. Этот метод полезен для любой инициализации, которую вы хотите выполнить с вашим объектом.

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

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

Python3

class Dog:

 

    

     attr1 = "mammal"

 

    

     def __init__( self , name):

         self .name = 0 name0003

 

Rodger = Dog( "Rodger" )

Tommy = Dog( "Tommy" )

 

print ( "Rodger is a {}" . format (Rodger.__class__.attr1))

print ( "Tommy is also a {}" . format (Tommy.__class__.attr1))

 

print ( "My name is {}" . format (Rodger.name))

print ( "Меня зовут {}" . формат (Tommy.name))

Выход 63 млекопитающее Роджер Томми тоже млекопитающее Меня зовут Роджер Меня зовут Томми

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

Python3

class Dog:

 

    

     attr1 = "mammal"

 

    

     def __init__( self , name):

         self . name = 0 name0003

DEF Speak ( Self ):

( hy . self .name))

 

Rodger = Dog( "Rodger" )

Tommy = Dog( "Tommy" )

 

Rodger.speak()

Tommy.speak()

Output

 My name is Rodger
Меня зовут Томми 

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

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

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

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

    Многоуровневое наследование:
    Многоуровневое наследование позволяет производному классу наследовать свойства непосредственного родительского класса, который, в свою очередь, наследует свойства родительского класса.

    Иерархическое наследование:
    Наследование на уровне иерархии позволяет нескольким производным классам наследовать свойства родительского класса.

    Множественное наследование:
    Многоуровневое наследование позволяет одному производному классу наследовать свойства более чем одного базового класса.

    Example: Inheritance in Python

    Python3

     

    class Person( object ):

     

        

         def __init__( сам , имя, идентификационный номер):

             self .name = name

             self . idnumber = idnumber

     

         def display( self ):

    Печать ( Self . Печать)0060 ( self .idnumber)

              

         def details( self ):

             print ( "My name is { } " . Формат ( Self .name))

    Печать ( " IDNUMB0059 format ( self . idnumber))

          

    class Employee(Person):

         def __init__( self , name, idnumber , зарплата, почта):

    Self .Salary = Схема

    Self .POST

    = Self .POST

    = .0060 post

     

            

             Person.__init__( self , name, idnumber)

              

         def details( self ) :

             печать ( "Меня зовут {}" . формат

    9 (

      0 собственн..name))

      Печать ( "Idnumber: {}" . Формат ( Self .idnumb "Post: {}" . format ( self .post))

       

       

      a = Employee( 'Rahul' , 886012 , 200000 , «Стажер» )

      A.Display () 998

      9003

      A.Display () 3

      A.Display () 3

      A.Display () 3

      A. Display () 3

      A.Display ()

      A.Display. Выход

       Рахул
      886012
      Меня зовут Рахул
      Идентификационный номер: 886012
      Сообщение: Intern 

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

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

      Полиморфизм

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

      Печать ( ". Полет ( Self ):

      Печать ( "Большинство птиц могут летать, но некоторые не могут.0003

      class sparrow(Bird):

          

           def flight( self ):

               print ( "Sparrows can fly. " )

      Класс Страя (птица):

      DEF ( Self ): ( Self

      ): (

      )0060

               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()

    Output

     There are many types птиц.
    Большинство птиц могут летать, но некоторые не могут. 
    Есть много видов птиц.
    Воробьи умеют летать.
    Есть много видов птиц.
    Страусы не умеют летать. 

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

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

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

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

    Example: Encapsulation in Python

    Python3

     

    class Base:

         def __init__( self ):

             Self . A = "Geeksforgeeks"

    Self .__ C = "Geeksforgeeks"0060

     

    class Derived(Base):

         def __init__( self ):

     

            

            

             Base. __init__( self )

             print ( "Вызов частного члена базового класса: "

    0 )

             print ( self . __c)

     

     

    obj1 = Base()

    print (obj1.a)

     

     

    Вывод

     GeeksforGeeks 

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

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

    Абстракция данных 

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

    Абстракция данных в Python может быть достигнута путем создания абстрактных классов.

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

    https://youtu.be/CiH7lN4

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

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

    Эта серия Python OOP содержит следующее подробное руководство . Вы можете напрямую прочитать их.

    • Классы и объекты в Python : вы поймете, как реализовать объектно-ориентированные программы, создавая классы и объекты.
    • Конструкторы в Python : узнайте, как создать конструктор для инициализации объекта в Python. создавать различные типы конструкторов.
    • Деструкторы Python для уничтожения объекта : Научитесь создавать деструктор в Python, чтобы освобождать объект других ресурсов, которые он использовал.
    • Инкапсуляция в Python : Научитесь реализовывать инкапсуляцию в Python с помощью класса. внедрить скрытие данных с использованием общедоступных, защищенных и частных членов
    • Полиморфизм в Python : Научитесь реализовывать полиморфизм в Python, используя перегрузку функций, переопределение методов и перегрузку операторов.
    • Наследование в Python : Научитесь реализовывать наследование в Python. Кроме того, изучите типы наследования и MRO (порядок разрешения методов).
    • Переменные экземпляра Python : Научитесь создавать и получать доступ к переменным экземпляра. Измените значения переменных экземпляра. Поймите, как динамически мы можем добавлять или удалять переменные экземпляра из объекта
    • Методы экземпляра Python : научитесь создавать и вызывать методы экземпляра. Поймите, как динамически мы можем добавлять или удалять методы экземпляра из объекта
    • .
    • Переменные класса Python : Научитесь создавать, изменять и получать доступ к переменным класса. Поймите разницу между переменными экземпляра и переменными класса.
    • Метод класса Python : научитесь создавать и вызывать методы класса. Создайте метод класса, используя декоратор @classmethod и функцию classmethod()
    • .
    • Статический метод Python : научитесь создавать и вызывать статические методы. Создайте статический метод с помощью декоратора @staticmethod и функции staticmethod()
    • Метод класса Python, статический метод и метод экземпляра : поймите разницу между всеми тремя методами класса
    • ООП-упражнение Python . Решите это упражнение, чтобы попрактиковаться и понять концепции ООП.

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

    Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на концепции « объектов ». Объект содержит как данные, так и код: данные в виде свойств (часто называемых атрибутами) и код в виде методов (действия, которые может выполнять объект).

    Объектно-ориентированная парадигма заключается в разработке программы с использованием классов и объектов. Язык программирования Python поддерживает различные подходы к программированию, такие как функциональное программирование, модульное программирование. Одним из популярных подходов является объектно-ориентированное программирование (ООП) для решения проблемы программирования путем создания объектов 9.0003 Концепции Python OOP

    Объект имеет следующие две характеристики:

    • Атрибут
    • Поведение

    Например, Автомобиль является объектом, так как он имеет следующие свойства:

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

    Одним из важных аспектов ООП в Python является создание повторно используемого кода с использованием концепции наследования. Эта концепция также известна как DRY (не повторяйтесь).

    Класс и объекты

    В Python все является объектом. Класс — это схема объекта . Чтобы создать объект, нам нужна модель, план или чертеж, который представляет собой не что иное, как класс.

    Например, вы создаете автомобиль по чертежу (шаблону) автомобиля. План содержит все размеры и структуру. Основываясь на этих описаниях, мы можем построить автомобиль, грузовик, автобус или любое транспортное средство. Здесь легковой автомобиль, грузовик, автобус являются объектами 9 класса транспортного средства.0003

    Класс содержит свойства (атрибут) и действие (поведение) объекта. Свойства представляют собой переменные, а методы представляют собой действия. Следовательно, класс включает в себя как переменные, так и методы.

    Класс и объекты Python

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

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

    Атрибуты и методы класса

    При разработке класса мы используем переменные экземпляра и переменные класса.

    В классе атрибуты могут быть разделены на две части:

    • Переменные экземпляра: Переменные экземпляра — это атрибуты, прикрепленные к экземпляру класса. Мы определяем переменные экземпляра в конструкторе (метод __init__() класса).
    • Переменные класса: переменная класса — это переменная, объявленная внутри класса, но вне любого метода экземпляра или __init()__ метод.

    Внутри класса мы можем определить следующие три типа методов.

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

    Прочтите Метод класса Python, статический метод и метод экземпляра, чтобы понять разницу между всеми тремя методами класса.

    Создание класса и объектов

    В Python используйте ключевое слово class для определения класса. В определении класса первой строкой является docstring, представляющая собой краткое описание класса.

    Строка документации не является обязательной, но рекомендуется к использованию. Мы можем получить строку документации, используя атрибут __doc__ . Используйте следующий синтаксис для создания класса .

    Синтаксис

     класс classname:
        '''строка документации'''
       class_suite 
    • Строка документации : представляет описание класса . Это необязательно.
    • class_suite : class suite содержит атрибуты и методы класса

    Мы можем создать любое количество объектов класса. используйте следующий синтаксис для создания объекта класса.

     reference_variable = classname() 

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

     class Сотрудник:
        # переменные класса
        company_name = 'Компания ABC'
    
        # конструктор для инициализации объекта
        def __init__(я, имя, зарплата):
            # переменные экземпляра
            self.name = имя
            собственная зарплата = зарплата
    
        # метод экземпляра
        деф-шоу (я):
            print('Сотрудник:', self.name, self.salary, self.company_name)
    
    # создаем первый объект
    emp1 = Сотрудник ("Гарри", 12000)
    emp1. show()
    
    # создаем второй объект
    emp2 = Сотрудник("Эмма", 10000)
    emp2.show()
     

    Выход :

     Сотрудник: Гарри 12000 ABC Company
    Сотрудник: Эмма 10000 ABC Company 
    • В приведенном выше примере мы создали класс с именем Сотрудник.
    • Далее мы определили два атрибута имя и зарплата.
    • Далее в методе __init__() мы инициализировали значение атрибутов. Этот метод вызывается сразу после создания объекта. Метод init инициализирует объект.
    • Наконец, из класса Employee мы создали два объекта, Эмму и Гарри.
    • Используя объект, мы можем получить доступ и изменить его атрибуты.
    переменные и методы экземпляра

    Конструкторы в Python

    В Python конструктор — это метод особого типа, используемый для инициализации объекта класса. Конструктор будет выполняться автоматически при создании объекта. Если мы создаем три объекта, конструктор вызывается три раза и инициализирует каждый объект.

    Основная цель конструктора — объявить и инициализировать переменные экземпляра. Он может принимать по крайней мере один аргумент равный 9.0059 сам . Метод __init()__ называется конструктором в Python. Другими словами, имя конструктора должно быть __ init __ (self) .

    Конструктор является необязательным, и если мы не предоставляем конструктор, Python предоставляет конструктор по умолчанию. У каждого класса в Python есть конструктор, но его не обязательно определять.

    Подробнее :

    • Конструкторы в Python
    • деструкторов Python для уничтожения объекта

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

    В Python инкапсуляция — это метод объединения данных и функций в единую сущность. Например, класс A инкапсулирует все данные (методы и переменные). Инкапсуляция означает, что внутреннее представление объекта обычно скрыто от внешнего определения объекта.

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

    Необходимость инкапсуляции

    Инкапсуляция действует как защитный слой. Мы можем ограничить доступ к методам и переменным извне и предотвратить случайное или несанкционированное изменение данных. Инкапсуляция обеспечивает безопасность, скрывая данные от внешнего мира.

    Прочтите полное руководство по инкапсуляции в Python .

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

    Когда вы создаете класс, это означает, что вы реализуете инкапсуляцию. Класс является примером инкапсуляции, поскольку он связывает все элементы данных (переменные экземпляра) и методы в единое целое.

    В Python у нас нет модификаторов доступа, таких как public, private и protected. Но мы можем добиться инкапсуляции, используя префикс single 9.0022 подчеркивание и двойное подчеркивание для управления доступом к переменной и методу в программе Python.

     класс Сотрудник:
        def __init__(я, имя, зарплата):
            # публичный член
            self. name = имя
            # закрытый участник
            # недоступно вне класса
            self.__salary = зарплата
    
        деф-шоу (я):
            print("Имя ", self.name, "и зарплата", self.__salary)
    
    emp = Сотрудник("Джесса", 40000)
    emp.show()
    
    # доступ к зарплате вне класса
    print(emp.__salary)
     

    Выход :

     Имя Джесса и зарплата 40000
    AttributeError: объект «Сотрудник» не имеет атрибута «__salary» 

    В приведенном выше примере мы создаем класс с именем Сотрудник . В этом классе мы объявляем две переменные , имя и __salary . Мы можем заметить, что переменная name доступна, но __salary является частной переменной . Мы не можем получить к нему доступ извне класса. Если мы попытаемся получить к нему доступ, мы получим ошибку

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

    Полиморфизм в ООП — это способность объекта принимать множество форм . Проще говоря, полиморфизм позволяет нам выполнять одно и то же действие разными способами.

    Полиморфизм происходит от греческих слов Poly (много) и morphism (формы). Полиморфизм определяет способность принимать различные формы.

    Например, учащийся может действовать как студент в колледже, действовать как игрок на земле и как дочь/брат дома. Другой пример на языке программирования, оператор +, действует как конкатенация и арифметическое сложение.

    Полиморфизм Python

    Прочтите полное руководство по полиморфизму в Python .

    Пример: использование полиморфизма в Python

    Например, в приведенном ниже примере метод экземпляра calculate_area() создан как в классе Circle, так и в классе Rectangle. Таким образом, мы можем создать функцию, которая берет любой объект и вызывает метод calculate_area() объекта для реализации полиморфизма. Использование этого объекта может выполнять

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

     класс Круг:
        пи = 3,14
    
        def __init__(я, редиус):
            self. radius = редиус
    
        def calculate_area (я):
            print("Площадь круга:", self.pi * self.radius * self.radius)
    
    класс Прямоугольник:
        def __init__(я, длина, ширина):
            собственная длина = длина
            собственная ширина = ширина
    
        def calculate_area (я):
            print("Площадь прямоугольника:", self.length * self.width)
    
    # функция
    площадь защиты (форма):
        # действие вызова
        shape.calculate_area()
    
    # создать объект
    круг = круг (5)
    прямоугольник = прямоугольник (10, 5)
    
    # вызов общей функции
    площадь (окр)
    площадь (прямая)
     

    Выход :

     Площадь круга : 78,5
    Площадь прямоугольника: 50 

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

    В объектно-ориентированном языке программирования наследование является важным аспектом. В Python наследование — это процесс наследования свойств родительского класса дочернему классу.

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

    Синтаксис

     class BaseClass:
      Тело базового класса
    класс DerivedClass (базовый класс):
      Тело производного класса 

    Прочтите полное руководство по Наследование в Python

    Пример: использование наследования в Python

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

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

     # Базовый класс
    класс Транспортное средство:  def __init__(я, имя, цвет, цена):
     self.name = имя
     self.color = цвет
     собственная цена = цена  информация о защите (я):
     print(self.name, self.color, self.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *