что такое метод python
Что такое метод класса в Python и зачем нужен.
Сразу начнем с примера простого класса, который содержит обычный метод и метод класса:
Как работают методы класса в Python?
MyClass() настроен таким образом, что реализация каждого метода возвращает кортеж для отслеживания, что происходит, и к каким частям класса или объекта метод может получить доступ.
Вот что происходит, когда мы вызываем метод экземпляра:
Попробуем вызвать метод класса:
Для чего нужны методы класса в Python?
Следующие примеры кода должны сделать понимание метода класса более ясным. Далее рассмотрим пример класса, имеющего дело с информацией о дате (это будет шаблон):
Этот класс, очевидно, можно использовать для хранения информации об определенных датах, без информации о часовом поясе (предположим, что все даты представлены в формате UTC).
Например есть несколько задач, которые можно решить при помощи будущих методов этого класса, не только определенного для примера метода, банального перевода числовых значений в формат строки с датой для баз данных.
Итак, что для этого необходимо сделать:
Это будет выглядеть так:
Создадим еще один «конструктор».
Более подробно о перегрузке смотрите в материале «Перегрузка методов в Python».
Рассмотрим приведенную выше реализацию чтобы понять, какие преимущества здесь есть:
Используя методы класса, можно добавить столько альтернативных конструкторов, сколько необходимо. Такое поведение может сделать интерфейс создаваемых классов самодокументированным (до определенной степени конечно) и упростить их использование.
Класс и объект в Python
Объектно-ориентированное программирование в Python
Python — это процедурно-ориентированный и одновременно объектно-ориентированный язык программирования.
Процедурно-ориентированный
«Процедурно-ориентированный» подразумевает наличие функций. Программист может создавать функции, которые затем используются в сторонних скриптах.
Объектно-ориентированный
«Объектно-ориентированный» подразумевает наличие классов. Есть возможность создавать классы, представляющие собой прототипы для будущих объектов.
Создание класса в Python
Синтаксис для написания нового класса:
Атрибут:
Атрибут — это элемент класса. Например, у прямоугольника таких 2: ширина ( width ) и высота ( height ).
Метод:
Конструктор:
Создание объекта с помощью класса Rectangle:
Что происходит при создании объекта с помощью класса?
При создании объекта класса Rectangle запускается конструктор выбранного класса, и атрибутам нового объекта передаются значения аргументов. Как на этом изображении:
Конструктор с аргументами по умолчанию
В других языках программирования конструкторов может быть несколько. В Python — только один. Но этот язык разрешает задавать значение по умолчанию.
Все требуемые аргументы нужно указывать до аргументов со значениями по умолчанию.
Сравнение объектов
В Python объект, созданный с помощью конструктора, занимает реальное место в памяти. Это значит, что у него есть точный адрес.
Атрибуты
В Python есть два похожих понятия, которые на самом деле отличаются:
Стоит разобрать на практике:
Атрибут
Объекты, созданные одним и тем же классом, будут занимать разные места в памяти, а их атрибуты с «одинаковыми именами» — ссылаться на разные адреса. Например:
Атрибуты функции
Обычно получать доступ к атрибутам объекта можно с помощью оператора «точка» (например, player1.name ). Но Python умеет делать это и с помощью функции.
Функция | Описание |
---|---|
getattr (obj, name[,default]) | Возвращает значение атрибута или значение по умолчанию, если первое не было указано |
hasattr (obj, name) | Проверяет атрибут объекта — был ли он передан аргументом «name» |
setattr (obj, name, value) | Задает значение атрибута. Если атрибута не существует, создает его |
delattr (obj, name) | Удаляет атрибут |
Встроенные атрибуты класса
Объекты класса — дочерние элементы по отношению к атрибутам самого языка Python. Таким образом они заимствуют некоторые атрибуты:
Переменные класса
Переменные класса в Python — это то же самое, что Field в других языках, таких как Java или С#. Получить к ним доступ можно только с помощью имени класса или объекта.
Для получения доступа к переменной класса лучше все-таки использовать имя класса, а не объект. Это поможет не путать «переменную класса» и атрибуты.
У каждой переменной класса есть свой адрес в памяти. И он доступен всем объектам класса.
Составляющие класса или объекта
Что такое «метод» в Python?
может ли кто-нибудь, пожалуйста, объяснить мне в очень простых терминах, что такое «метод» в Python?
дело в том, что во многих учебниках Python для начинающих это слово используется таким образом, как будто новичок уже знал, что такое метод в контексте Python. Хотя я, конечно, знаком с общим значением этого слова, Я понятия не имею, что означает этот термин в Python. Так что, пожалуйста, объясните мне, что такое «метод Pythonian» все о.
очень простой пример код был бы очень признателен, поскольку изображение стоит тысячи слов.
5 ответов
Это функция, которая является членом класса:
(существуют также некоторые альтернативные виды методов, позволяющие управлять отношениями между классом и функцией. Но я предполагаю из вашего вопроса, что вы спрашиваете не об этом, а скорее только об основах.)
метод является функцией, которая принимает экземпляр класса в качестве первого параметра. Методы являются членами класса.
как вы хотели знать, что это конкретно означает в Python, можно различать связанные и несвязанные методы. В Python все функции (и как таковые также методы) являются объектами, которые можно передавать и «играть». Таким образом, разница между несвязанными и связанными методами:
1) связанные методы
2) несвязанные методы
при доступе к C.method (метод внутри класса, а не внутри экземпляра), вы получаете несвязанный метод. Если вы хотите вызвать его, вы должны передать экземпляр как первый параметр, потому что метод не привязанные к любому экземпляру.
зная эту разницу, вы можете использовать функции / методы в качестве объектов, таких как передача методов. В качестве примера использования представьте API, который позволяет определить функцию обратного вызова, но вы хотите предоставить метод в качестве функции обратного вызова. Нет проблем, просто пройти self.myCallbackMethod как обратный вызов, и он будет автоматически вызываться с экземпляром в качестве первого аргумента. Это было бы невозможно в статике языки, как C++ (или только с хитростью).
надеюсь, вы поняли;) я думаю, что это все, что вы должны знать об основах метода. Вы также можете прочитать больше о classmethod и staticmethod декораторы, но это другая тема.
списки не имеют upper метод, а строки не имеют append метод. Почему? Потому что методы существуют только для определенного объекта, если они были явно определено для этого типа объекта, и разработчики Python (до сих пор) решили, что эти конкретные методы не нужны для этих конкретных объектов.
один общий момент путаницы касается следующего:
это функция, которая является членом класса.
вот пример функции, которая становится членом класса. С тех пор он ведет себя, как метод класса. Давайте начнем с пустой класс и нормальная функция с одним аргументом:
теперь мы добавляем членом C класса, который ссылка на функцию. После этого мы можем создать экземпляр класса и вызвать его метод, как будто он был определен внутри класса:
мы можем использовать также альтернативный способ вызова метода:
на o.func даже проявляется так же, как метод класса:
и мы можем попробовать обратный подход. Давайте определим класс и украдем его метод как функцию:
пока все выглядит так же. Теперь функция кражи:
истина заключается в том, что метод не признавать ‘что’ аргументы:
ИМХО, это не аргумент против метод-это функция, которая является членом класса.
нашел the ответ Алекса Мартелли это в основном говорит то же самое. Извините, если вы считаете это дублированием:)
обычно метод вызывается сразу после его привязки:
будет продолжать печатать hello world до конца времени.
на самом деле, вы уже догадались ответ: особенность методы что объект передается как первый аргумент функция. В нашем примере вызов x.f () точно эквивалентно Класса MyClass.f (x). В общем случае, вызов метода со списком аргументов Н эквивалентен вызову соответствующей функции с аргументом список, созданный путем вставки объекта метода перед первым аргумент.
Если вы все еще не понимаете, как работают методы, посмотрите на осуществление может, возможно, прояснить ситуацию. Когда экземпляр атрибут ссылается, что не является атрибутом данных, его класс искали. Если имя обозначает допустимый атрибут класса, который является объектом функции, a объект метода создается путем упаковки (указателей на) объекта экземпляра и объект функции, только что найденный вместе в абстрактном объекте: это объект, метод. Когда объект вызывается с список аргументов, новый список аргументов создается из экземпляра объект и список аргументов, а объект функции звонил с этот новый список аргументов.
Классы, методы Python 3. Примеры ООП (объектно ориентированное программирование)
Объектно-ориентированный Python
Python был объектно-ориентированным языком с момента его появления. Из-за этого создавать и использовать классы и объекты совершенно просто. Эта глава поможет вам стать экспертом в использовании объектно-ориентированного программирования в Python.
Эта статья является кратким введением в объектно-ориентированное программирование (ООП) на Python, которое поможет вам быстро вникнуть в суть и начать решать прикладные задачи.
Краткий обзор ооп python
Программа/скрипт/код, написанные с использованием парадигмы объектно-ориентированного программирования, должны состоять из
Что такое класс в ооп python?
Класс = данные + методы
Класс — это тип данных, состоящий из набора атрибутов (свойств) и методов — функций для работы с этими атрибутами.
Схематично класс можно представить следующим образом:
Для создания классов предусмотрена инструкция class. Тело класса состоит из блока различных инструкций.
Методы в классах — это те же функции, которые принимают один обязательный параметр — self (с англ. можно перевести как «собственная личность»). Он нужен для связи с конкретным объектом.
Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными на основе данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в теле метода, если данный метод будет вызван для конкретного объекта.
Пример класса (ООП) на Python 3:
Результат выполнения скрипта Python 3:
Конструктор класса — метод __init__
Большинство классов имеют специальный метод, который автоматически при создании объекта создает ему атрибуты. Т.е. вызывать данный метод не нужно, т.к. он сам запускается при вызове класса. (Вызов класса происходит, когда создается объект.)
Такой метод называется конструктором класса и в языке программирования Python носит имя __init__. (В начале и конце по два знака подчеркивания.)
Первым параметром, как и у любого другого метода, у __init__ является self, на место которого подставляется объект в момент его создания. Второй и последующие (если есть) параметры заменяются аргументами, переданными в конструктор при вызове класса. Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет. Требуется создать два атрибута объекта.
Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет. Требуется создать два атрибута объекта.
Пример 1:
Пример 2:
Результат выполнения двух скриптов:
Что значит аргумент self в Python 3 в методе класса
Аргумент self — это ссылка на создаваемый в памяти компьютера объект.
Методы класса — это небольшие программки, предназначенные для работы с объектами. Методы могут создавать новые свойства (данные) объекта, изменять существующие, выполнять другие действия над объектами.
Методу необходимо «знать», данные какого объекта ему предстоит обрабатывать. Для этого ему в качестве первого (а иногда и единственного) аргумента передается имя переменной, связанной с объектом (можно сказать, передается сам объект). Чтобы в описании класса указать передаваемый в дальнейшем объект, используется параметр self.
С другой стороны, вызов метода для конкретного объекта в основном блоке программы выглядит следующим образом:
Здесь под словом Объект имеется в виду переменная, связанная с ним. Это выражение преобразуется в классе, к которому относится объект, в
Т.е. конкретный объект подставляется вместо параметра self
Объектно-ориентированное программирование Python 3. Классы, объекты, экземпляры, методы
Принципы ООП
Объектно-ориентированный язык работает по следующим принципам:
Идеи/принципы объектно-ориентированного программирования:
Преимущества ООП
В связи со своими особенностями объектно-ориентированное программирование имеет ряд преимуществ перед структурным (и др.) программированием. Выделим некоторые из них:
Особенность ООП
ООП позволяет сократить время на написание исходного кода, однако ООП всегда предполагает большую роль предварительного анализа предметной области, предварительного проектирования. От правильности решений на этом предварительном этапе зависит куда больше,чем от непосредственного написания исходного кода.
Особенности ООП в Python
По сравнению с другими распространенными языками программирования у Python можно выделить следующие особенности, связанные с объектно-ориентированным программированием:
Обзор терминологии ООП
Создание классов
Оператор класса создает новое определение класса. Имя класса следует сразу за ключевым словом class, за которым следует двоеточие:
Пример
Ниже приведен пример простого класса Python
Создание объектов экземпляра
Доступ к атрибутам
Вы получаете доступ к атрибутам объекта, используя оператор точки с объектом. Переменная класса будет доступна с использованием имени класса следующим образом:
Теперь, объединяя все концепции
Когда приведенный выше код выполняется, он дает следующий результат
Вы можете добавлять, удалять или изменять атрибуты классов и объектов в любое время
Вместо использования обычных операторов для доступа к атрибутам, вы можете использовать следующие функции:
Встроенные атрибуты класса
Каждый класс Python поддерживает следующие встроенные атрибуты, и к ним можно получить доступ, используя оператор точки, как и любой другой атрибут —
Для приведенного выше класса давайте попробуем получить доступ ко всем этим атрибутам
Когда приведенный выше код выполняется, он дает следующий результат
Уничтожение объектов (Сборка мусора)
Python автоматически удаляет ненужные объекты (встроенные типы или экземпляры классов), чтобы освободить пространство памяти. Процесс, посредством которого Python периодически восстанавливает блоки памяти, которые больше не используются, называется сборкой мусора.
Сборщик мусора в Python запускается во время выполнения программы и запускается, когда счетчик ссылок на объект достигает нуля. Количество ссылок объекта изменяется по мере изменения количества псевдонимов, которые на него указывают.
Пример
Этот деструктор __del __ () печатает имя класса экземпляра, который должен быть уничтожен
Когда приведенный выше код выполняется, он дает следующий результат
Наследование классов
Вместо того, чтобы начинать с нуля, вы можете создать класс, выведя его из ранее существовавшего класса, перечислив родительский класс в скобках после имени нового класса.
Дочерний класс наследует атрибуты своего родительского класса, и вы можете использовать эти атрибуты, как если бы они были определены в дочернем классе. Дочерний класс также может переопределять элементы данных и методы родительского класса.
Синтаксис
Производные классы объявляются так же, как их родительский класс; однако список базовых классов для наследования дается после имени класса
Пример
Когда приведенный выше код выполняется, он дает следующий результат
Аналогичным образом вы можете управлять классом из нескольких родительских классов следующим образом:
Вы можете использовать функции issubclass () или isinstance (), чтобы проверить отношения двух классов и экземпляров.
Переопределяющие методы
Вы всегда можете переопределить ваши родительские методы класса. Одна из причин переопределения родительских методов заключается в том, что вам может потребоваться особая или другая функциональность в вашем подклассе.
Пример
Когда приведенный выше код выполняется, он дает следующий результат
Базовые методы перегрузки
В следующей таблице перечислены некоторые общие функции, которые вы можете переопределить в своих собственных классах.
Sr.No. | Метод, описание и пример вызова |
---|---|
1 | __init__ (self [, args …]) Конструктор (с любыми необязательными аргументами) Пример вызова: obj = className (args) |
2 | __del __ (самостоятельно) Деструктор, удаляет объект Образец звонка: del obj |
3 | __repr __ (самостоятельно) Оцениваемое строковое представление Пример вызова: repr (obj) |
4 | __str __ (самостоятельно) Печатное представление строки Пример вызова: str (obj) |
5 | __cmp__ (self, x) Пример вызова: cmp (obj, x) |
Операторы перегрузки
Предположим, что вы создали класс Vector для представления двумерных векторов. Что произойдет, когда вы добавите оператор «плюс»? Скорее всего, Python будет кричать на вас.
Однако вы можете определить метод __add__ в вашем классе для выполнения сложения векторов, и тогда оператор плюс будет вести себя так, как ожидалось:
пример
Когда приведенный выше код выполняется, он дает следующий результат
Скрытие данных
Атрибуты объекта могут или не могут быть видны вне определения класса. Вам необходимо присвоить имена атрибутам с двойным префиксом подчеркивания, и тогда эти атрибуты не будут напрямую видны посторонним.
пример
Когда приведенный выше код выполняется, он дает следующий результат
Когда приведенный выше код выполняется, он дает следующий результат
Справочник
Встроенные функции Python
Возвращает абсолютную величину (модуль числа).
all(iterable)
Проверяет, все ли указанные элементы принимают значение «истина».
iterable : Объект, поддерживающий итерирование.
Вернёт True, если все элементы итерируемого объекта представляются истиной (True).
Внимание: Также возвращает True, если итерируемый объект пуст.
any(iterable)
Проверяет, есть ли среди указанных элементов хотя бы один, принимающий значение «истина».
iterable : Объект, поддерживающий итерирование.
Вернёт True, если любой из элементов итерируемого объекта явится истиной.
Внимание: Возвращает False, если итерируемый объект пуст.
ascii(object)
Возвращает строковое представление объекта с экранированными не-ASCII символами.
object : Объект, для которого требуется создать строковое представление.
Как и repr(), возвращает строковое представление объекта object, но при этом экранирует не-ASCII символы, возвращённые repr() при помощи \x, \u или \U.
Преобразование целого числа в двоичную строку.
Преобразует целое число в двоичную строку. Результатом будет полноценное Python-выражение.
bool([x])
Преобразование к типу bool, использующая стандартную процедуру проверки истинности. Если х является ложным или опущен, возвращает значение False, в противном случае она возвращает True.
bytearray([source[, encoding[, errors]]])
mode : Режим компиляции кода: exec, если код состоит из последовательности инструкций; eval, если код содержит одно выражение; single, если код состоит из одной инструкции. Если код содержит несколько строк, то при использовании режимов single и eval (а до версии 3.2 ещё и exec), нужно завершить ввод не меньшей мере одним символом перевода строки.
Если исходный код содержит ошибку возбуждается исключение SyntaxError, если он содержит нулевые байты — исключение TypeError.
Объекты кода могут быть исполнены при помощи exec() или eval().
complex([real[, imag]])
Преобразование к комплексному числу.
delattr(obj, name)
Удаляет из объекта указанный атрибут.
obj : object Объект, из которого следует удалить атрибут.
name : str Строка с именем атрибута, который должен быть удалён из указанного объекта.
Атрибут объекта (свойство, метод, элемент) будет удалён в случае, если объект разрешает/поддерживает это действие.
Метод зачастую используется в случаях, когда имя атрибута заранее неизвестно и содержится в переменной.
Синоним: директива del.
Для возвращения атрибута используется getattr(). Для установки атрибута используется setattr(). Для проверки существования атрибута используется hasattr().
dir([obj])
Возвращает имена [переменных], доступные в локальной области, либо атрибуты указанного объекта в алфавитном порядке.
obj : Объект, для которого следует вернуть имена атрибутов.
При вызове без аргумента, возвращает имена [переменных], доступные в локальной области, иначе — атрибуты указанного объекта.
Определение в классе метода dir(), возвращающего список и имён, позволяет варьировать результат выполнения данной функии для экземпляров класса. Это может быть особенно полезно, когда класс определяет также методы доступа к атрибутам: getattr() и getattribute().
Для объектов, класс которых не определил dir(), функция попытается определить атрибуты по данным dict.
Возвращаемый список может включать не все атрибуты, особенно в случаях с переопределенным getattr().
Механизм извлечения имён может быть реализован по разному для различных типов: 1. Если объект является модулем, список будет содержать имена атрибутов модуля; 2. Если объект является типом или классом, список будет содержать имена атрибутов данного объекта и его родителей (вычисляются рекурсивно). 3. В других случаях список будет содержать имена атрибутов самого объекта, его класса, и классов-родителей (вычисляются рекурсивно).
dict([object])
Создаёт новый словарь. Объект dict является классом словаря.
divmod()
Для целочисленного деления возвращает пару частное-остаток от деления аргументов.
a : Число. Делимое.
b : Число. Делитель.
Если аргументы являются разными типами действуют правила двоичной арифметики.
Для целых результат аналогичен (a // b, a % b).
enumerate(sequence[, start=0])
Возвращает генератор, отдающий пары счётчик-элемент для элементов указанной последовательности.
sequence : iterable Любая последовательность, итератор, или объект, поддерживающий итерирование.
start=0 : int Начальное значение счётчика.
Функция применяется в случаях, когда необходим счётчик количества элементов в последовательности.
Позволяет избавиться от необходимости инициализировать и обновлять отдельную переменную-счётчик:
eval(expression, globals=None, locals=None)
Разбирает и исполняет указанное выражение.
expression : Выражение, которое требуется исполнить, в виде строки. Либо объект кода.
globals=None : Ожидается dict. Словарь глобального пространства, относительно которого следует исполнить выражение. Если указан, но не содержит атрибута builtins данные указанного пространства будут дополнены данными общего глобального пространства, перед разбором выражения. Таким образом, выражение будет иметь доступ ко всем встроенным модулям.
locals=None : Ожидается объект-отображение (например, dict). Локальное пространство, в котором следует исполнить выражение. Если не указано, то используется словарь глобального пространства. Если оба аргумента опущены, то выражение будет выполнено в среде, где был осуществлён вызов функции. В случае ошибок возбуждает SyntaxError.
Данная функция также может быть использована для выполнения произвольных объектов кода, например тех, что возвращает compile().
Если объект кода собран в режиме exec будет возвращено None.
exec(obj[, globals[, locals]])
Динамически исполняет указанный код.
obj : Строка кода, либо объект кода. Поддерживается ввод данных из файлов (считываются до EOF). Если передана строка, она разбирается в набор инструкций, который потом исполняется (если отсутствуют синтаксические ошибки). Если передан объект кода, то он исполняется. Необязательные аргументы (см. ниже) могут быть указаны в виде кортежа прямо после инструкции.
globals : Ожидается dict. Словарь глобального пространства, относительно которого следует исполнить код. Если locals не передан, будет использован globals. Если словарь не имеет значения по ключу builtins, на это место вставляется ссылка на значение аналогичного атрибута глобального пространства. Модифицировав builtins словаря передаваемого в функцию, вы можете контролировать, какие какие из встроенных инструментов будут доступны коду.
locals : Ожидается объект-отображение (например, dict). Локальное пространство, в котором следует исполнить код.
Если дополнительные параметры опущены, код исполняется в текущем пространстве.
Не следует пытаться модифицировать словарь locals (см. описание locals()). Если требуется влияние кода, исполненного exec() на локальную область, явно передавайте словарь locals.
filter((func, iterable)
При помощи указанной функции фильтрует элементы переданного объекта.
func : Фильтрующая функция. Должна принимать элемент фильтруемого объекта. Если функция вернёт False, данный элемент не попадёт в результат. Если передано None, считается что требуется применить тождественное отображение (lambda *args: args), таким образом все элементы, оцениваемые как False будут отфильтрованы.
iterable : Объект, элементы которого следует отфильтровать. Может быть последовательностью, объектом поддерживающим итерирование, либо итератором. Если объект является строкой, или кортежем, результат будет соответствующего типа, в остальных случаях возвращается список.
float([x])
Преобразование к числу с плавающей точкой. Если аргумент не указан, возвращается 0.0.
format(value[, format_spec])
Форматирует указанное значение.
value : Значение, которое требуется отформатировать.
format_spec : Настройки формата, в соответствии с которыми требуется выполнить форматирование. Интерпретация настроек зависит от типа значения. По умолчанию — пустая строка (обычно приводит к тому же эффекту, что и применение str ()).
Интерпретация настроек форматирования зависит от типа переданного значения, однако большинство встроенных типов используют общий мини-язык форматирования.
Вызов этой функции format(value, formatspec) транслируется в type(value).format(value, formatspec), при этом словарь экземпляра при поиске метода format() во внимание не берётся.
frozenset([iterable])
Возвращает неизменяемое множество.
getattr(obj, name[, default])
Возвращает значение атрибута объекта.
obj : object Объект, значение атрибута которого требуется получить.
name : str Имя атрибута, значение которого требуется получить.
default : Значение по умолчанию, которое будет возвращено, если объект не располагает указанным атрибутом. Если не задано, и атрибут отсутствует, возбуждается исключение AttributeError. Функция возвращает значение атрибута указанного объекта по имени.
Обычно используется в тех случаях, когда объект и/или имя атрибута может варьироваться (является переменной).
Для установки атрибута используется setattr(). Для удаления атрибута используется delattr(). Для проверки существования атрибута используется hasattr().
globals()
Возвращает словарь с глобальной таблицей символов, определённых в модуле.
Возвращает словарь с глобальной таблицей символов — словарь текущего модуля.
Если вызвана внутри функции/метода возвращает словарь модуля, в котором функция или метод определены, но не модуля из которых они были вызваны.
hasattr(obj, name)
Возвращает флаг, указывающий на то, содержит ли объект указанный атрибут.
obj : object Объект, существование атрибута в котором нужно проверить.
name : str Имя атрибута, существование которого требуется проверить. Возвращает True, если атрибут существует, иначе — False.
Функция основывается на вызове getattr() с последующей проверкой на предмет случившегося исключения.
Для возвращения атрибута используется getattr(). Для установки атрибута используется setattr(). Для удаления атрибута используется delattr().
hash(obj)
Возвращает хеш указанного объекта.
Хеш используется, в частности, для быстрого сравнения ключей при поиске по словарям. Равные числовые значения имеют одинаковый хеш, даже если значения принадлежат разным типам (например, 1 и 1.0).
Пользовательские типы могут переопределять метод hash(), результат которого будет использован при вызове hash(). Однако, следует помнить, что функция hash() обрезает значение в соответствии с битностью хоста.
Возвращает строку с шестнадцатеричным представлением указанного целого.
Получаемая строка имеет нижний регистр и префикс 0x.
id(obj)
Возвращает идентификатор указанного объекта.
obj : Объект, идентификатор которого требуется получить.
Возвращает целое, гарантированно являющееся уникальным и постоянным для объекта на время его существования.
Таким образом, объекты, периоды существования которых не пересекаются, могут иметь одинаковый идентификатор.
input([prompt])
Считывает и возвращает строку входных данных.
prompt : Строка-приглашение, которая должна быть отправлена на стандартное устройство вывода (заключительный перевод каретки при этом удаляется). Если загружен модуль readline, тогда функция воспользуется им для удобства ввода пользователя (например, для поддержки истории команд).
Функция считывает строку данных, полученную с устройства ввода и возвращает её без заключительного перевода каретки.
В случае считывания EOF (признак конца файла), поднимается исключение EOFError.
int([x=0, [base=10]])
Преобразует x к целому числу в десятичной системе счисления. Вместо десятичной системы можно указать любое основание от 2 до 36 включительно.
import(name, globals=None, locals=None, fromlist=(), level=0)
iter(obj[, sentinel])
Возвращает объект итератора.
obj : Объект коллекции, поддерживающей итерирование (реализует iter()), либо объект, поддерживающий протокол последовательности (реализует getitem(), где аргумент целое, начиная с нуля). Если передан другой объект, возбуждается TypeError.
sentinel : Если этот аргумент предоставлен, то ожидается, что obj содержит объект, поддерживающий вызов. В этом случае, созданный итератор будет вызывать указанный объект (без аргументов) с каждым обращением к своему next() и проверять полученное значение на равенство с sentinel. Если полученное значение равно sentinel, возбуждается StopIteration, иначе возвращается полученное значение. Функция возвращает итератор по объекту, поддерживающему итерирование по его элементам.
Одно из применений sentinel — чтение строк, пока не будет достигнута нужная. Следующий пример считывает файл, пока метод readline() не вернёт пустую строку:
Пользовательский тип, определивший call():
isinstance()
Возвращает флаг, указывающий на то, является ли указанный объект экземпляром указанного класса (классов).
issubclass(cls, classinfo)
Возвращает флаг, указывающий на то, является ли указанный класс подклассом указанного класса (классов).
cls : Класс, требующий проверки.
classinfo : Класс, либо кортеж с классами. Если аргумент не является классом, либо кортежем с классами, возбуждается TypeError. Возвращает True, если указанный класс является подклассом указанного класса (классов). Класс считается подклассом самого себя.
Для проверки того, является ли объект экземпляром класса (классов) используйте isinstance.
len(obj)
Возвращает число элементов в указанном объекте-контейнере.
obj : Объект-контайнер, число элементов в котором требуется определить. Возвращает число элементов в контейнерах: объекте-последовательности (строка, байты, кортеж, список, диапазон) или объекте-коллекции (словарь, множество, неизменяемое множество и пр.).
list([iterable])
locals()
Возвращает словарь, представляющий текущую локальную таблицу символов.
Обновляет и возвращает словарь с текущей локальной таблицей символов.
Если функция вызвана внутри другой функции, то она возвращает также свободные (объявленные вне функции, но используемые внутри неё) переменные.
map(func, iterable, …)
Применяет указанную функцию к каждому элементу указанной последовательности/последовательностей.
func : Функция, которую следует применить к элементам последовательности или последовательностей. Должна принимать количество элементов равное количеству последовательностей. Если передано None, считается что требуется применить тождественное отображение (lambda *args: args), при этом, если передано несколько последовательностей результат будет содержать кортежи с данными из каждой из них.
iterable : Последовательность (или объект, поддерживающий итерирование), к элементам которой требуется применить функцию. Если в какой‑либо из последовательностей количество элементов меньше, чем в остальных, недостающие элементы считаются None. Итератор останавливается, когда самая короткая из последовательностей исчерпана.
max(iterable, *args[, key, default])
Возвращает элемент с набольшим значением из переданных в функцию.
iterable : Если указан один позиционный аргумент, то ожидается, что он является итерируемым объектом. Возвращается элемент с максимальным значением, найденный среди элементов этого объекта.
args : Если указано несколько позиционных аргументов, элемент с наибольшим значением разыскивается среди них.
default : Этим аргументом можно указать значение, которое следует вернуть, если итерируемый объект окажется пустым. Если последовательность пуста и аргумент не указан, возбуждается ValueError.
В указанном итерируемом объекте, или среди аргументов, обнаруживает и возвращает элемент с набольшим значением.
memoryview(obj)
Создает объект memoryview.
Возвращает элемент с наименьшим значением из переданных в функцию.
iterable: Если указан один позиционный аргумент, то ожидается, что он является итерируемым объектом. Возвращается элемент с минимальным значением, найденный среди элементов этого объекта.
args: Если указано несколько позиционных аргументов, элемент с наименьшим значением разыскивается среди них.
default: Этим аргументом можно указать значение, которое следует вернуть, если итерируемый объект окажется пустым. Если последовательность пуста и аргумент не указан, возбуждается
В указанном итерируемом объекте, или среди аргументов, обнаруживает и возвращает элемент с наименьшим значением.
next(iter[, default])
Возвращает следующий элемент итератора.
iter : Объект итератора, возвращающий элементы.
default : Значение, которое должно быть возвращено вместо возбуждения StopIteration, в случае исчерпания элементов при итерации.
Функция вызывает метод next() указанного объекта для получения следующего элемента.
При исчерпании элементов, возбуждается исключение StopIteration.
object()
Возвращает безликий объект, являющийся базовым для всех объектов.
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Открывает файл и возвращает представляющий его объект.
file : Строка или байтовая строка, представляющая путь (абсолютный, либо относительный для текущей рабочей директории) к файлу, который требуется открыть. Либо целое, являющееся дескриптором файла (он будет закрыт при закрытии возвращаемого объекта ввода/вывода, при условии, что closefd установлен в True).
mode=r : Строка, обозначающая режим, в котором следует открыть файл.
buffering=-1 : Целое. Политика буферизации. 0 — отключить буферизацию (только для двоичного режима); 1 — построчная буферизация (только для текстового режима); > 1 — размер буфера в байтах. Если не указана, используются политика буферизации по умолчанию (см. ниже).
encoding=None : Имя кодировки для кодирования/декодирования файла. Следует указывать только для текстовых файлов. Если не указана, используется системная кодировка: для определения вызывается locale.getpreferredencoding(False). При чтении и записи двоичных файлов указывать кодировку не следует. Список поддерживаемых кодировок можно найти в модуле codecs.
errors=None : Строка, обозначающая режим, в котором будут обрабатываться ошибки кодирования/декодирования. Следует использовать только для текстовых файлов. В модуле codecs предопределено несколько режимов, пользовательские могут быть зарегистрированы при помощи codecs.register_error().
newline=None : Строка, определяющая режим работы универсальных переводов строк. Следует использовать только для текстовых файлов. Варианты: None, пустая строка, \n, \r, и \r\n. None — при чтении потока будут использованы универсальные переводы строк (\n, \r и \r\n будут преобразованы в \n); при записи — \n преобразуются в разделитель, используемый в системе (os.linesep). Пустая строка — при чтении также используются универсальные переводы строк, однако символы не будут преобразованы в \n; при записи преобразование не происходит. Другие значения — при чтении разбивка на строки осуществляется при помощи значения, преобразование не производится; при записи \n преобразуются в указанное значение.
closefd=True : Флаг необходимости закрытия файлового дескриптора. Используется только, если в file указан дескриптор, иначе возбуждается исключение. Если False, то дескриптор будет оставлен открытым даже после закрытия файла.
opener=None : Пользовательский объект, поддерживающий вызов, который следует использовать для открытия файла. Этот объект получая на входе file и flags, должен возвращать открытый дескриптор файла (возврат os.open и None при этом функционально идентичны). Описание объектов типа file можно найти в одноимённом разделе — file.
Если файл не может быть открыт, возбуждается исключение OSError.
ord(chr)
Возвращает числовое представление для указанного символа.
chr : Символ, который следует представить в виде целого.
pow(x, y[, z])
Возвращает результат возведения числа в степень, с опциональным делением по модулю.
x : Число, которое требуется возвести в степень.
y : Число, являющееся степенью, в которую нужно возвести первый аргумент. Если число отрицательное, аргумент z не принимается.
z : Число, на которое требуется произвести деление по модулю. Если число указано, ожидается, что x и y положительны и имеют тип int.
Ожидаются аргументы численных типов.
Если переданы операнды разных типов, приведение производится по правилам двоичной арифметики.
Случай использования только первых двух аргументов pow(x, y) эквивалентен использованию оператора возведения в степень: x ** y. Нотация с тремя аргументами используется для возведения в степень по модулю.
property(fget=None, fset=None, fdel=None, doc=None)
print(*objs, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
Выводит заданные объекты на экран или отправляет их текстовым потоком в файл.
objs : Объекты, которые требуется отправить в файл.
sep=»» : Строка, которой следует разделить объекты. None — использовать значение по умолчанию. Ожидается, что аргумент будет передан по имени.
end=\n** : Строка, которой следует поставить после всех объектов. None — использовать значение по умолчанию. Ожидается, что аргумент будет передан по имени.
file=sys.stdout : Ожидается объект, реализующий метод wrtite(string). Если значение не указано, либо None будет использован sys.stdout. Ожидается, что аргумент будет передан по имени.
flush= False : Если True поток будет сброшен в файл принудительно. Обычно же необходимость буферизации определяется типом файла.
Объекты будут преобразованы в строку по тем же правилам, по которым работает str()
Если объекты не указаны, запишет значение из параметра end.
range(start, stop[, step])
Арифметическая прогрессия от start до stop с шагом step.
repr(obj)
Возвращает формальное строковое представление указанного объекта.
obj : Объект для которого требуется получить формальное строковое представление. Для многих типов функция возвращает строку, которая при передаче в eval() может произвести объект с тем же значением, что и исходный.
В других случаях представление является строкой, обрамлённой угловыми скобками ( ), содержащей название типа и некую дополнительную информацию, часто — название объекта и его адрес в памяти.
reversed(seq)
round(number[, ndigits])
Возвращает число с плавающей запятой, округлённое до указанного количества цифр после запятой.
number : Число, которое требуется округлить.
ndigits : Количество знаков после запятой. Если не указано, то равно 0.
Для встроенных типов, поддерживающих функцию, значения округляются до ближайшего кратного 10 в степени минус ndigits; если два кратных одинаково близки, округление производится в сторону чётного. Так, например, и round(0.5) и round(-0.5) равны 0, но round(1.5) равно 2.
set(object, name, value)
setattr(obj, name, value)
Добавляет объекту указанный атрибут.
obj : object Объект, который следует дополнить атрибутом.
name : str Строка с именем атрибута. Можно указывать как имя нового, так и существующего атрибута.
value : Произвольное значение атрибута.
Атрибут объекта (свойство, метод, элемент) будет добавлен в случае, если объект разрешает/поддерживает это действие.
Метод зачастую используется в случаях, когда имя атрибута и/или значение заранее неизвестно и содержится в переменной.
Для возвращения атрибута используется getattr().
Для удаления атрибута используется delattr().
Для проверки существования атрибута используется hasattr().
sorted(iterable[, key][, reverse])
Возвращает новый отсортированный список, составленный из элементов итерирующегося объекта.
iterable : Объект, поддерживающий итерирование, элементы которого требуется упорядочить.
cmp=None : Ожидается в форме именованного аргумента. Функция, принимающая аргументами два стоящих рядом элемента, которая должна вернуть отрицательное число (если первый меньше второго), нуль (если равны) и положительное (если первый больше второго). Например: cmp=lambda x,y: cmp(x.lower(), y.lower()). Использование сочетаний key + reverse намного быстрее эквивалентной cmp-функции из‑за того, что в первом случае обращение к каждому из элементов происходит единожды, а во втором по несколько раз.
key=None : Ожидается в форме именованного аргумента. Функция, принимающая аргументом элемент, используемая для получения из этого элемента значения для сравнения его с другими. None — сравнить элементы напрямую. Например: key=str.lower.
reverse=False : Ожидается в форме именованного аргумента. Флаг, указывающий следует ли производить сортировку в обратном порядке.
Сортировка при помощи данной функции является стабильной — гарантирует неизменность расположения равных между собой элементов. Такое поведение полезно при сортировке в несколько проходов (например, сортировка по отделу и уровню заработной платы).
str(object=»)
Строковое представление объекта.
staticmethod(function)
Представляет указанную функцию статичным методом.
function : Функция, которую следует представить статичным методом.
Может использоваться к качестве декоратора.
В статичные методы, в отличие, скажем, от обычных или от classmethod(), не передаётся первый аргумент неявным образом. Статичные методы в Питоне похожи на аналогичные в C++ или Java.
Для объявления статичного метода используйте staticmethod в качестве декоратора:
Вызывается как через класс — C.f() —, так и через экземпляр — C().f(), при этом данные экземпляра игнорируются, а принимаются во внимание только данные его класса.
sum(iterable[, start])
Суммирует элементы указанного объекта и возвращает результат.
iterable : Объект, поддерживающий итерацию по его элементам. Ожидается, что элементы этого объекта являются числами, но не строками. Если объект пуст, функция вернёт начальное значение (start).
start=0 : Число, с которого следует начать суммирование.
super([type[, object-or-type]])
Возвращает объект-посредник (прокси), делегирующий вызовы методов родителю или собрату класса указанного типа.
type : Тип, от которого следует начать поиск объекта-посредника. Ранее атрибут был обязателен.
obj-or-type : Если не указан, возвращается несвязанный объект-посредник. Если атрибут является объектом, то будет получен посредник для получения метода объекта, для которого isinstance(obj, type) возвращает True. Если атрибут является типом, то будет получен посредник для получения метод класса, для которого issubclass(subtype, type) возвращает True. Используется для доступа к базовым реализациям наследуемых методов, перекрытых в классе-наследнике.
Порядок поиска метода тот же, что и при getattr(), только type пропускается: тип имеет атрибут mro, в котором задаётся порядок поиска методов, используемый как getattr(), так и super(). Атрибут динамический и может изменяться по мере обновления иерархии наследования.
Типичные случаи использования super()
В иерархиях с единичным наследованием используется для обращения к родительским классам, чтобы явно не указывать их имена, это упрощает поддержку кода в дальнейшем. Данный тип использования имеет родственников в других языках программирования.
Второй вариант используется для поддержки совместного множественного наследования в динамическом окружении. Вариант уникален для Питона и отсутствует в языках статически компилируемых или поддерживающих только единичное наследование. Он делает возможным обращение с ромбовидными иерархиями (см. проблема ромба), при которых несколько базовых классов задают реализацию метода с одним и тем же именем. Правила хорошего проектирования требуют того, чтобы во всех случаях метод имел одну и ту же сигнатуру (в связи с тем, что порядок вызовов определяется во время исполнения, потому как он задаётся при изменении иерархии, и потому что в цепи могут присутствовать собратья, неизвестные до момента исполнения).
Без аргументов функция работает только внутри определения класса: необходимые для идентификации класса и доступа к методам его объекта детали заполняет компилятор.
tuple([iterable])
Преобразование к кортежу.
type(object)
Возвращает тип объекта.
vars([obj])
Возвращает словарь из атрибута dict указанного объекта.
obj : Объект, для которого следует вернуть словарь атрибутов (dict).
Возвращает словарь атрибутов (dict) указанного объекта — модуля, класса, экземпляра, и любого другого объекта, имеющего атрибут dict.
Внимание
Следует помнить, что атрибут dict модулей и экземпляров поддерживает изменение, однако другие объекты могут налагать запрет его модификацию (так, например, классы используют прокси для предотвращения прямой модификации этого словаря).
Если функция vars вызвана без аргументов, результат подобен вызову locals()
zip(*iterables)
Возвращает итератор по кортежам, где i-тый кортеж содержит i-тый элемент каждой из указанных последовательностей.
iterables : Итерируемые объекты, элементы которых следует упаковать в кортежи. Если передана одна последовательность, вернётся итератор по кортежам, состоящим из единственного элемента. Если последовательности не переданы, возвращается пустой итератор.
Итератор останавливается, когда исчерпана кратчайшая из последовательностей.
Гарантируется вычисление слева направо, что делает возможным следующую идиому кластеризации данных по группам n-длины — zip(*[iter(s)] * n):
В сочетании с оператором * функция может быть использована для распаковки списка: