Абстрагирования метод это: метод абстрагирования | Перевод метод абстрагирования?

Метод абстрагирования и его формы

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

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

Метод сравнения

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

С помощью этого метода сравниваются:

  • отчетные показатели с плановыми,

  • плановые показатели с возможными,

  • плановые показатели с показателями предшествующего периода,

  • показатели организации со среднеотраслевыми и показателями лучших фирм,

  • фактические действия с установленными нормами,

  • фактические качества работников (умения, навыки, знания) с требуемыми: способности работников, их потребности, степень удовлетворения потребностей,

  • цели, нормы, проекты, ресурсы, эффективность,

  • фактические оценки с декларируемыми,

  • имеющиеся методы с используемыми методами,

  • имеющаяся информация с необходимой для решения проблем,

  • новые проблемы с уже известными.

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

Из сказанного следует, что понятие “эффективность” необходимо конкретизировать. Оно выработано экономической наукой и означает соотношение затрат и результатов деятельности. Экономическое происхождение понятия “эффективность” до сих пор сказывается на степени его разработанности. В частности, можно отметить, что применительно к коммерческим организациям данное явление не только хорошо изучено, но является и объектом управления.

В области же государственного и муниципального управления оно находится на стадии теоретического обсуждения, говорить об его использовании для совершенствования практики управления пока не приходится. “Как уже не раз отмечалось, – пишет Г.В. Атаманчук, – главной проблемой государственного управления в целом, и практической деятельности по формированию и реализации его многогранных проявлений в частности, выступает проблема обусловленности, обоснованности и эффективности всех управленческих функций, организационных структур, форм методов и стадий управленческой деятельности”
1
. Механический перенос опыта менеджмента в область государственного управления не дает положительных результатов, поэтому необходим анализ понятия “эффективность”, выявление общего и особенного в его содержании.

П. Друкер – теоретик эффективного

менеджмента

поэтическое абстрагирование • 101 метод развития креативности

23. 07.2015 vetas

Sticky Post By vetas On 23.07.2015

Что вы слышали о поэтическом абстрагировании? Ха! До сегодняшнего дня вы вообще не слышали про такой метод развития креативности. Возможно, что-то слышали про прогрессирующее абстрагирование Хорста Гешки. Но это не совсем то, потому что сегодняшний метод про поэтов, хотя и немного абстрактных…

Это отличный симбиоз двух явлений, пришедших к нам из Древней Греции (у этой страны было золотое время!). Метод настолько универсальный и рабочий, что применим почти для любых целей: от разработки мощной стратегии чего-угодно (благодаря первому элементу — абстрагированию, переходу от частного к общему), заканчивая разработкой креативных концепций чего-угодно (благодаря поэзии, второму элементу метода). Воспользовавшись раз, пользуюсь и сейчас! Слышали такое?

Как работает поэтическое абстрагирование?

Ключ к решению вашей задачи — иная плоскость её рассмотрения. Вы всегда можете сформулировать свой вопрос иначе, и во время этой формулировки отойти чуть дальше, на более общий уровень. В итоге, вы должны нарисовать офигенный mindmap вашей проблемы, со стихами! Вот вам алгоритм:

1. определите предмет вопроса, напишите про него стих
2. перейдите на один уровень абстракции выше, напишите про него стих
3. есть решение? Отлично!
4. нет решения? см.2

Пример

1. Завелась мышь, а на котов аллергия? Как вывести мышь?

Мышка-мышка-мышка,
Зачем ты завелась?
Подойди поближе,
У тебя есть… мазь?!

2. Мышь — это живое существо (первая абстракция).

Тёплое дыханье,
Ласковый оскал,
Выпьем за знакомство,
Где же твой бокал?!

3. У живых существ есть чувства (вторая абстракция).

Не пищи так грустно,
Щас не до тебя,
На душе так пусто!
Пей давай до дна…

На чувства можно давить! Решение вашей проблемы найдено — надавите на чувства мышке, поговорите с ней, расскажите ей, что обожаете мышек, но почему-то они все у вас дохнут, покажите фотографии дохлых мышей. Включите «Том и Джерри», заплачьте… Думаю, после этого она сама и уйдёт.

Кого взять с собой?

Метод позволяет принимать участие неограниченному количеству людей, но где вы столько возьмёте? Боюсь, даже на всей Земле столько нет. Пригласите для начала digital-стратега BBDO и заведующего Окской птицефабрикой. Что?! Ну хорошо, пригласите кого можете.

Что понадобится?

— свободный лот времени до 60 минут
— временно свободное тихое помещение
— абсолютная свобода мысли
— письменные принадлежности (лучше записывать и зарисовывать ваши мысли)

Какие альтернативы существуют?

— Веер концепций де Боно
— Ментальные карты
— Можно вместо поэзии использовать грейпфрут

Минусы и плюсы

Главный минус — у вас может ничего не получиться с первого раза. С первых нескольких десятков раз. Хорошо-хорошо… Сотен. Главный плюс — это феерически весело и в итоге решение будет найдено! Не сдавайтесь!

Я не призываю вас постоянно пользоваться этим методом. Просто пообещайте мне, что попробуете разок. Вы ничего не потеряете, но многое приобретёте! Пишите мне о своих результатах.

Блок П.П.П.

— представьте, что оно рассказывает вам стих:

— послушайте Кровосток — Куртец
— положите пакет абстракции в корзину

Вот. Теперь всё. Приятных абстракций…

Tagged: абстрагирование, быстрый, Гешка, групповой, одиночный, простой

abc — Абстрактные базовые классы — Документация Python 3.11.1

Исходный код: Lib/abc.py


Этот модуль обеспечивает инфраструктуру для определения абстрактной базы классы (ABC) в Python, как указано в PEP 3119 ; см. PEP, почему это было добавлено в Python. (См. также PEP 3141 и Модуль номеров , относящийся к иерархии типов для номеров на основе ABC.

)

Модуль collections содержит несколько конкретных классов, производных от азбуки; они, конечно, могут быть получены в дальнейшем. В дополнение collections.abc В подмодуле есть несколько ABC, которые можно использовать для проверки того, класс или экземпляр предоставляет определенный интерфейс, например, если он hashable или если это сопоставление.

Этот модуль предоставляет метакласс ABCMeta для определения ABC и вспомогательный класс ABC для альтернативного определения ABC через наследование:

класс abc.ABC

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

 из abc импорта ABC
класс MyABC (ABC):
    проходить
 

Обратите внимание, что тип ABC по-прежнему ABCMeta , поэтому наследование от ABC требует обычных мер предосторожности в отношении использование метаклассов, так как множественное наследование может привести к конфликтам метаклассов. Можно также определить абстрактный базовый класс, передав метакласс ключевое слово и используя ABCMeta напрямую, например:

 из импорта abc ABCMeta
класс MyABC (метакласс = ABCMeta):
    проходить
 

Новое в версии 3.4.

класс abc.ABCMeta

Метакласс для определения абстрактных базовых классов (ABC).

Используйте этот метакласс для создания ABC. ABC может быть подклассом напрямую, и затем действует как смешанный класс. Вы также можете зарегистрировать несвязанный бетон классы (даже встроенные классы) и несвязанные ABC как «виртуальные подклассы» — эти и их потомки будут считаться подклассами регистрируемого Азбука встроенная

функция issubclass() , но регистрация ABC не будет отображаться в их MRO (приказе разрешения метода) и не будет реализации, определенные регистрирующим ABC, могут быть вызваны (даже через супер() ). 1

Классы, созданные с помощью метакласса ABCMeta , имеют следующий метод:

регистр( подкласс )

Зарегистрируйте подкласс как «виртуальный подкласс» этой ABC. За пример:

 из abc импорта ABC
класс MyABC (ABC):
    проходить
MyABC.register(кортеж)
утверждать issubclass (кортеж, MyABC)
утверждать isinstance((), MyABC)
 

Изменено в версии 3.3: возвращает зарегистрированный подкласс, чтобы его можно было использовать в качестве декоратора класса.

Изменено в версии 3.4: Чтобы обнаружить вызовы register() , вы можете использовать метод Функция get_cache_token() .

Вы также можете переопределить этот метод в абстрактном базовом классе:

__subclasshook__( подкласс )

(Должен быть определен как метод класса.)

Проверить, является ли подкласс считается подклассом этого ABC. Это означает что вы можете дополнительно настроить поведение issubclass без нужно вызвать register() для каждого класса, который вы хотите рассмотреть подкласс АВС. (Этот метод класса вызывается из __subclasscheck__() метод Азбуки. )

Этот метод должен возвращать True , False или NotImplemented . Если он возвращает

True , подкласс считается подклассом этого ABC. Если он возвращает False , подкласс не считается подклассом эту азбуку, даже если она обычно была бы одной. Если он вернется NotImplemented , проверка подкласса продолжается обычным механизм.

Для демонстрации этих концепций посмотрите на этот пример определения ABC:

 класс Фу:
    def __getitem__(я, индекс):
        ...
    защита __len__(я):
        ...
    защита get_iterator (я):
        вернуть его (себя)
класс MyIterable(ABC):
    @абстрактный метод
    защита __iter__(я):
        в то время как Ложь:
            урожайность
    защита get_iterator (я):
        вернуть себя.__iter__()
    @классметод
    защита __subclasshook__(cls, C):
        если cls MyIterable:
            если есть ("__iter__" в B. __dict__ для B в C.__mro__):
                вернуть Истина
        вернуть нереализованный
MyIterable.register(Foo)
 

ABC MyIterable определяет стандартный итерируемый метод, __iter__() , как абстрактный метод. Данная реализация здесь все еще можно вызывать из подклассов. Метод get_iterator() также является частью абстрактного базового класса MyIterable , но не имеет для переопределения в неабстрактных производных классах.

Определенный здесь метод класса __subclasshook__() говорит, что любой класс который имеет __iter__() в своем __dict__ (или в одном из его базовых классов, доступ к через список __mro__ ) также считается MyIterable .

Наконец, последняя строка делает Foo виртуальным подклассом MyIterable , хотя он не определяет метод __iter__() (он использует итерируемый протокол старого стиля, определенный в терминах __len__() и __getitem__() ). Обратите внимание, что это не сделает get_iterator доступен как метод Foo , поэтому предоставляется отдельно.

Модуль abc также предоставляет следующий декоратор:

@abc.abstractmethod

Декоратор, указывающий абстрактные методы.

Для использования этого декоратора требуется, чтобы метакласс класса был ABCMeta или происходит от него. Класс, имеющий метакласс, производный от ABCMeta не может быть создан, пока не будут реализованы все его абстрактные методы. и свойства переопределяются. Абстрактные методы можно вызывать с помощью любого нормальных «супер» механизмов вызова. abstractmethod() можно использовать объявлять абстрактные методы для свойств и дескрипторов.

Динамическое добавление абстрактных методов в класс или попытка изменить статус абстракции метода или класса после его создания поддерживается с помощью функции update_abstractmethods() . abstractmethod() влияет только на подклассы, полученные с использованием обычных наследование; «виртуальные подклассы», зарегистрированные в регистре ABC () метод не влияет.

Когда abstractmethod() применяется в сочетании с другим методом дескрипторов, он должен применяться как самый внутренний декоратор, как показано на следующие примеры использования:

 класс С(АВС):
    @абстрактный метод
    def my_abstract_method(я, arg1):
        ...
    @классметод
    @абстрактный метод
    def my_abstract_classmethod (cls, arg2):
        ...
    @статический метод
    @абстрактный метод
    Def my_abstract_staticmethod (arg3):
        ...
    @имущество
    @абстрактный метод
    Def my_abstract_property (я):
        ...
    @my_abstract_property.setter
    @абстрактный метод
    def my_abstract_property (я, значение):
        ...
    @абстрактный метод
    защита _get_x (я):
        ...
    @абстрактный метод
    защита _set_x (я, значение):
        . ..
    х = свойство (_get_x, _set_x)
 

Чтобы правильно взаимодействовать с механизмом абстрактного базового класса, дескриптор должен идентифицировать себя как абстрактный, используя __isabstractmethod__ . В общем случае этот атрибут должен быть True если какой-либо из методов, используемых для составления дескриптора, является абстрактным. За Например, встроенное в Python свойство эквивалентно:

. Дескриптор класса
:
    ...
    @имущество
    def __isabstractmethod__(я):
        вернуть любой (getattr (f, '__isabstractmethod__', False) для
                   f in (self._fget, self._fset, self._fdel))
 

Примечание

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

Модуль abc также поддерживает следующие устаревшие декораторы:

@abc.abstractclassmethod

Новое в версии 3.2.

Устарело, начиная с версии 3.3: теперь можно использовать classmethod с abstractmethod() , что делает этот декоратор излишним.

Подкласс встроенного classmethod() , указывающий на абстрактный метод класса. В остальном это похоже на abstractmethod() .

Этот особый случай устарел, так как декоратор classmethod() теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:

 класс С(АВС):
    @классметод
    @абстрактный метод
    def my_abstract_classmethod (cls, arg):
        ...
 
@abc.abstractstaticmethod

Новое в версии 3.2.

Устарело, начиная с версии 3.3: теперь можно использовать статический метод с abstractmethod() , что делает этот декоратор излишним.

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

Этот особый случай устарел, так как декоратор staticmethod() теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:

 класс С(АВС):
    @статический метод
    @абстрактный метод
    def my_abstract_staticmethod (аргумент):
        ...
 
@abc.abstractproperty

Устарело, начиная с версии 3.3: теперь можно использовать свойство , property.getter() , property.setter() и property.deleter() с abstractmethod() , что делает этот декоратор излишним.

Подкласс встроенного property() , указывающий на абстрактный имущество.

Этот особый случай устарел, так как декоратор property() теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:

 класс С(АВС):
    @имущество
    @абстрактный метод
    Def my_abstract_property (я):
        . ..
 

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

 класс С(АВС):
    @имущество
    защита х (я):
        ...
    @x.setter
    @абстрактный метод
    защита х (я, значение):
        ...
 

Если только некоторые компоненты являются абстрактными, только эти компоненты должны быть обновлено для создания конкретного свойства в подклассе:

 класс Д(С):
    @C.x.setter
    защита х (я, значение):
        ...
 

Модуль abc также обеспечивает следующие функции:

abc.get_cache_token()

Возвращает текущий токен кэша абстрактного базового класса.

Токен — это непрозрачный объект (поддерживающий проверку на равенство), идентифицирующий текущая версия кэша абстрактного базового класса для виртуальных подклассов. Маркер изменяется при каждом вызове ABCMeta. register() на любом ABC.

Новое в версии 3.4.

abc.update_abstractmethods( cls )

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

Возвращает cls , чтобы разрешить использование в качестве декоратора класса.

Если cls не является экземпляром ABCMeta , ничего не делает.

Примечание

Эта функция предполагает, что суперклассы cls уже обновлены. Он не обновляет никаких подклассов.

Новое в версии 3.10.

Сноски

1

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

Абстрактный метод Python и абстрактный класс

Абстрактный метод — это метод, который объявлен, но не имеет реализации такие методы называются абстрактными методами.

В Python мы можем объявить абстрактный метод с помощью декоратора @abstractmethod .

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

Пример:

 из абстрактного метода импорта abc
класс Транспортное средство:
    @абстрактный метод
    защита getNoOfWheels (я):
        pass 

Вышеупомянутая программа не имеет реализации, и мы не получим никакого вывода.

Здесь дочерний класс отвечает за реализацию абстрактного метода родительского класса.

Операторы Python

частично реализованные классы называются абстрактными классами; каждый абстрактный класс в Python должен быть дочерним по отношению к классу ABC, который присутствует в модуле abc.

Пример:

 из abc import ABC, abstractmethod
класс транспортного средства (АВС):
    @абстрактный метод
    защита getNoOfWheels (я):
        пройти 

Дочерние классы отвечают за реализацию абстрактных методов родительского класса.

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

Мы не можем создать объект для абстрактного класса, но мы можем создать объект для дочернего класса.

 из abc import ABC, abstractmethod
класс Транспортное средство (ABC): ## абстрактный класс
    @abstractmethod ##абстрактный метод
    защита getNoOfWheels (я):
        проходить
    
class Bus(Vehicle): ##реализация родительского абстрактного класса с использованием дочернего класса
    защита getNoOfWheels (я):
        вернуть 6
    
class Auto(Vehicle): ##реализация родительского абстрактного класса с использованием дочернего класса
    защита getNoOfWheels (я):
        вернуть 3
    
б=автобус()
печать (b.getNoOfWheels())
а=авто()
печать(a.getNoOfWheels()) 

Вывод:

В чем преимущество объявления абстрактного метода в родительском классе

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

, если мы не обеспечим реализацию этого абстрактного метода, тогда Python выдаст ошибку

 из abc import ABC, abstractmethod
класс транспортного средства (АВС):
    @абстрактный метод
    защита getNoOfWheels (я):
        проходить
    
Класс Автобус(Автомобиль):
   проходить
    
б=автобус()
 

Вывод:

Если мы удалим декоратор @abstractmethod, то метод станет обычным методом, и дочерний класс может реализовать его, а может и не реализовать.

 из abc import ABC, abstractmethod
класс транспортного средства (АВС):
   
    защита getNoOfWheels (я):
        проходить
    
Класс Автобус(Автомобиль):
   проходить
    
b=Bus() 

Вывод: он не выдает никакого вывода, но и не выдает никаких ошибок.

Модули Python

1. Если класс содержит один абстрактный метод и если мы расширяем класс ABC, то создание экземпляра невозможно; на Абстрактный класс с созданием экземпляра абстрактного метода (создание объекта) невозможен .

Рассмотрим приведенный ниже пример , который представляет собой конкретный класс, который не содержит абстрактного метода и абстрактного класса, и, следовательно, мы можем выполнить создание экземпляра объекта

 Тест класса:
    проходить
t=Test() 

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

Абстрактный класс может содержать нулевое количество абстрактных методов

 из abc import *
Тест класса (ABC):
    проходить
t=Test() 

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

 из импорта abc *
Тест класса (ABC):
    проходить
т = тест ()
##Вывод:
  Файл "C:/Users/User/.spyder-py3/temp.py", строка 6, в 
    т = тест ()
TypeError: не удается создать экземпляр абстрактного класса Test с абстрактными методами m1 

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

 из импорта abc *
Класс Тест:
      @абстрактный метод
      защита m1 (я):
          проходить
t=Test() 

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

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

 из импорта abc *
Тест класса (ABC):
      @абстрактный метод
      защита m1 (я):
          проходить
      
подтест класса (тест):
    проходить
s=Подтест()
##Выход:
  Файл «C:/Users/User/.spyder-py3/temp.py», строка 10, в 
    s=Подтест()
TypeError: невозможно создать экземпляр абстрактного класса SubTest с помощью абстрактных методов m1 

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

 из импорта abc *
Тест класса (ABC):
      @абстрактный метод
      защита m1 (я):
          проходить
      @абстрактный метод
      защита m2 (я):
          проходить
      
подтест класса (тест):
    защита m1 (я):
        print("Метод m1")
s=Подтест()
с.м1()
##Вывод:
  Файл «C:/Users/User/.spyder-py3/temp.py», строка 14, в 
    s=Подтест()
TypeError: невозможно создать экземпляр абстрактного класса SubTest с помощью абстрактных методов m2 

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

 из импорта abc *
Тест класса (ABC):
 @абстрактный метод
 защита m1 (я):
 проходить
 @абстрактный метод
 защита m2 (я):
 проходить 
подтест класса (тест):
 защита m1 (я):
 print("реализация метода m1") 
 защита m2 (я):
 print("реализация метода m2")
s=Подтест()
с.

About the Author

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

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

Related Posts