English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Управление потоком Python

Функции в Python

Типы данных в Python

Операции с файлами Python

Объекты и классы Python

Даты и время Python

Продвинутые знания Python

Руководство Python

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

В этой статье вы узнаете о面向 объектном программировании (OOP) в Python и его базовых концепциях через примеры.

Введение в OOP Python

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

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

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

  • Атрибуты

  • Бehavior

Давайте举个 пример:

Попугай является объектом,

  • Имя, возраст, цвет - это атрибуты

  • Петь, танцевать - это поведение

Концепция OOP в Python сосредоточена на создании повторно используемого кода. Этот концепт также называется DRY (Don't Repeat Yourself) - Не повторяйся.

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

ИнheritanceПроцесс использования详细信息 нового класса без изменения существующего класса.
Encapsulation

Скрытие частных细节 класса от других объектов.

Полиморфизм

Концепция использования универсальных операций по-разному для различных данных.

Класс (class)

Класс является шаблоном объекта.

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

Пример класса попугая может быть следующим:

class Parrot:
    pass

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

Объект (Object)

Объект (пример) является примером класса. При определении класса определяется описание объекта. Таким образом, не выделяется память или хранение.

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

obj = Parrot()

Здесь obj является объектом класса Parrot.

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

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

class Parrot:
    # Классовые атрибуты
    species = "птица"
    # Примерные свойства
    def __init__(self, name, age):
        self.name = name
        self.age = age
# Примеризация класса Parrot
blu = Parrot("Синица", 10)
woo = Parrot("Папуга", 15)
# Доступ к свойствам класса
print("Синица — {}".format(blu.__class__.species))
print("Папуга также {}".format(woo.__class__.species))
# Доступ к свойствам примера
print("{} имеет {} лет".format(blu.name, blu.age))
print("{} имеет {} лет".format(woo.name, woo.age))

Когда мы запустим программу, вывод будет:

Синица — птица
Папуга также птица
Синица 10 лет
Папуга 15 лет

В предыдущем примере мы создали объект с именемParrotкласс. Затем мы определяем свойства. Свойства — это характеристики объекта.

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

Затем мы используем class .species для доступа к свойствам класса. Классовые свойства всех примеров класса одинаковы. Аналогично, мы используем blu.name и blu.age для доступа к свойствам примера. Но для каждого примера класса свойственные свойства различаются.

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

Методы

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

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

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)
# Пример объекта
blu = Parrot("Blu", 10)
# Вызов наших примерных методов
print(blu.sing("'Happy'"))
print(blu.dance())

Когда мы запустим программу, вывод будет:

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

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

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

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

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

# Основной класс
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()

Когда мы запускаем этот программ, вывод будет:

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

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

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

Encapsulation

В Python с использованием OOP, мы можем ограничить доступ к методам и переменным. Это предотвращает прямое изменение данных (называемое объединением данных). В Python мы используем подчеркивание в начале для обозначения частных свойств, то есть одиночное "_" или двойное "__".

Пример 4: Объединение данных в Python

class Computer:
    def __init__(self):
        self.__maxprice = 900
    def sell(self):
        print("Цена: 1000")
    def setMaxPrice(self, price):
        self.__maxprice = price
c = Computer()
c.sell()
# Изменение цены
c.__maxprice = 1000
c.sell()
# Использование функции setter
c.setMaxPrice(1000)
c.sell()

Когда мы запускаем этот программ, вывод будет:

Цена: 900
Цена: 900
Цена: 1000

В上面的 программе мы определилиComputerкласс. Мы используем метод __init__() для хранения максимальной цены компьютера. Мы пытаемся изменить цену. Но мы не можем изменить её, потому что Python будет__maxprice视为私有 атрибут. Чтобы изменить это значение, мы используем функцию setter, то есть setMaxPrice(), которая принимает price в качестве параметра.

Полиморфизм

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

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

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

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()
#Примеризация объекта
blu = Parrot()
peggy = Penguin()
# Передача объекта
flying_test(blu)
flying_test(peggy)

Когда мы запустим上面的 программу, вывод будет:

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

В上面的 программе мы определили два классаParrotиPenguin. У каждого из них есть общая метод fly(). Но их функции различаются. Чтобы обеспечить полиморфизм, мы создали общую интерфейс, то есть функция flying_test() может принимать любую функцию объекта. Затем мы передали в функцию flying_test():bluиpeggyОбъект, который эффективно работает.

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

  • Сделайте программирование простым и эффективным.

  • Классы могут быть совместно использованы, поэтому код можно повторно использовать.

  • Повысить продуктивность программистов

  • Данные защищены за счет абстракции.