Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

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

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

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

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

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

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

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

Объект имеет две характеристики:

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

Попугай — это объект, так как он имеет следующие свойства:

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

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

<час>

Класс

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

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

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

class Parrot:
    pass

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

<час>

Объект

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

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

obj = Parrot()

Здесь 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 is a bird
Woo is also a bird
Blu is 10 years old
Woo is 15 years old

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

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

Затем мы создаем экземпляры Parrot учебный класс. Вот, голубой и ууу являются ссылками (значением) на наши новые объекты.

Мы можем получить доступ к атрибуту класса, используя __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 sings 'Happy'
Blu is now dancing

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

<час>

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

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

Пример 3. Использование наследования в 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()

Вывод

Bird is ready
Penguin is ready
Penguin
Swim faster
Run faster

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

Опять же, дочерний класс изменил поведение родительского класса. Мы можем видеть это по whoisThis() метод. Кроме того, мы расширяем функции родительского класса, создавая новый run() метод.

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

<час>

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

Используя ООП в Python, мы можем ограничить доступ к методам и переменным. Это предотвращает прямую модификацию данных, которая называется инкапсуляцией. В Python мы обозначаем частные атрибуты, используя подчеркивание в качестве префикса, т.е. одиночный _ или двойной __ .

Пример 4. Инкапсуляция данных в 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()

Вывод

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

В приведенной выше программе мы определили Computer класс.

Мы использовали __init__() метод для хранения максимальной цены продажи Computer . Здесь обратите внимание на код

c.__maxprice = 1000

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

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

<час>

Полиморфизм

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

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

Пример 5. Использование полиморфизма в 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)

Вывод

Parrot can fly
Penguin can't fly

В приведенной выше программе мы определили два класса Parrot. и Пингвин . У каждого из них есть общий fly() метод. Однако их функции различны.

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

<час>

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


Python

  1. Класс и объект С#
  2. Типы данных Python
  3. Операторы Python
  4. Словарь Питона
  5. Пользовательские исключения Python
  6. Наследование Питона
  7. Одноэлементный класс Java
  8. Автоматическое отслеживание объекта обзора
  9. Java — объект и классы
  10. Java — Сериализация