Рубрики
Без рубрики

Обучение Python- промежуточный курс: день 43, DDD и многое другое на ООП

Сегодня мы охватим некоторые свойства OOP, которые не покрыты Python и посмотрите на то, как … с меткой начинчивающем матоне, Python, программирование, OOP.

Обучение Python (70 части серии)

Сегодня мы охватим некоторые свойства OOP, которые не покрываются Python и посмотрите на то, как Python решает смертный бриллиант смерти.

Python – это язык, предназначенный в основном для использования для анализа ориентированного на данных. Сегодня самое популярное использование Python является наукой данных и мл. Несмотря на то, что Python используется в качестве полного стека в некоторой степени, тяжелые приложения для резервного копирования, которые требуют OOP, все еще сделаны в Java в определенной степени.

Java это ООП. Это лучше всего подходит для рисунков дизайна и других красивых вещей ООП. Python подходит для науки о данных .. Вот почему, вероятно, Python не поддерживает несколько особенностей OOP, которые имеют решающее значение для проектирования шаблонов. Две самые значительные функции – Абстрактные классы и интерфейсы

Хотя эти функции могут быть недоступны в основном Python, мы все еще можем использовать их с помощью модуля, знающего как ABC Но это не для этого курса.

Отказ от ответственности! Расширенные концепции, такие как многократное наследование, набрав уток, модуль ABC, будет покрыт в расширенной части этого курса. Эта часть только для кратковременных этих концепций.

Интерфейсы

Почему нам даже нужны интерфейсы, когда Python поддерживает многократное наследование? Интерфейс является обработанным Java для нескольких наследований. Все функции интерфейсов покрыты двумя аспектами Python – множественное наследование и навязывание утки.

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

Утка печатает в Python

«Если это ходит как утка, плавает как утка, выглядит как утка, то она, вероятно, должна быть уткой».

Другими словами, у класса есть методы, свойства другого класса, это еще один класс. Это просто означает, что типы переходят для броска в Python, если методы и атрибуты одинаковы.

Я знаю, что вы ничего не поняли …. Это будет подробно описано в развитой части этого курса.

Многократное наследование в Python

Python поддерживает многократное наследование. Это означает, что один класс может наследовать два или более классов. Разрешение метода четко выполняется в Python, в отличие от C ++ и помогает решить большую часть вопросов больше об этом в расширенной части этого курса

Смертельный бриллиант смерти

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

Давайте продолжим вчерашнюю программу

class ape():
    food=""
    def __init__(self,weight):
        self.weight=weight
    def cry(self):
        pass # Do nothing
    def eat(self):
        print(self.food)

class chimpanzee(ape):
    def __init__(self,weight):
        super().__init__(weight)
        self.food="bananas"
    def cry(self):
        print("I am a chimp")

class gorrilla(ape):
    def __init__(self,weight):
        super().__init__(weight)
        self.food="fruits"
    def cry(self):
        print("I am a gorrilla")

class gorranzee(chimpanzee,gorrilla):
    pass

A=gorranzee(20)
print(A.food)
A.cry()
bananas
I am a chimp

class ape():
    food=""
    def __init__(self,weight):
        self.weight=weight
    def cry(self):
        pass # Do nothing
    def eat(self):
        print(self.food)

class chimpanzee(ape):
    def __init__(self,weight):
        super().__init__(weight)
        self.food="bananas"
    def cry(self):
        print("I am a chimp")

class gorrilla(ape):
    def __init__(self,weight):
        super().__init__(weight)
        self.food="fruits"
    def cry(self):
        print("I am a gorrilla")

class gorranzee(gorrilla,chimpanzee):
    pass

A=gorranzee(20)
print(A.food)
A.cry()


fruits
I am a gorrilla

Если горилла пропускается первым, то плакать () Метод и конструктор класса Gorilla будут работать. И если шимпанзе пройдет первый, то крик и конструктор класса шимпанзе будет запущен.

Абстрактные классы

В приведенном выше примере APE был классом, который не должен быть создан, и мог быть сделан абстрактный класс. Но Python не поддерживает абстрактные занятия встроенным образом. Однако модули могут быть использованы для реализации абстракций.

ABC модуль

ABC (абстрактные базовые классы) – это встроенный модуль Python, который позволяет использовать абстрактные классы и наследство в Python. Этот модуль предоставляет метакласс ABCMETA для определения ABCS и ABC помощника в качестве альтернативно определения ABCS через наследство.

Пакет Zope.interface обеспечивает реализацию «объектных интерфейсов» для Python. Он поддерживается проектом Zope Toolkit. Пакет экспортирует два объекта, «интерфейс» и «атрибут» напрямую. Он также экспортирует несколько помощников. Он стремится обеспечить более строгое семантику и лучшие сообщения об ошибках, чем встроенный модуль ABC Python.

Система витой плагинов альтернатива интерфейсу Zope.

И наконец, прежде чем закончить сегодняшнюю последнюю сессию, некоторые философские проповеди

Python следует за EAFP (проще просить прощения, чем разрешение), а не сбрасываться (посмотрим перед прыжками) философией. EAFP несколько связан с стилем «Утка».

Обучение Python (70 части серии)

Оригинал: “https://dev.to/aatmaj/learning-python-intermediate-course-day-43-ddd-and-more-on-oop-2npf”