Найти в Дзене
Осваиваю IT с нуля

Python: методы объектов. И и как их посмотреть.

В Python методы объектов — это функции, определённые внутри классов. Они позволяют объектам (экземплярам классов) выполнять действия или предоставлять доступ к своим данным. Методы обеспечивают объектно-ориентированную модель работы, делая код более логичным, читаемым и переиспользуемым. На данном этапе считается, что мы уже хорошо умеем создавать функции на Python и знаем как они работают. Методы в Python бывают разных типов: методы экземпляра, методы класса и специальные методы. Каждый из них играет свою роль: Знание этих различий помогает лучше управлять логикой программ. Далее пробежимся по всем трем типам. Методы экземпляра — это функции, привязанные к конкретным объектам (экземплярам класса). Они позволяют работать с внутренним состоянием объекта. Первым параметром таких методов всегда является self, ссылающийся на сам объект. Через self метод получает доступ ко всем атрибутам и другим методам объекта. self - это каждый отдельный объект класса - экземпляр. class User:
Оглавление

Python: методы объектов
Python: методы объектов

1. Введение

Что такое методы объектов в Python

В Python методы объектов — это функции, определённые внутри классов. Они позволяют объектам (экземплярам классов) выполнять действия или предоставлять доступ к своим данным. Методы обеспечивают объектно-ориентированную модель работы, делая код более логичным, читаемым и переиспользуемым. На данном этапе считается, что мы уже хорошо умеем создавать функции на Python и знаем как они работают.

Различие между методами класса, экземпляра и специальными методами

Методы в Python бывают разных типов: методы экземпляра, методы класса и специальные методы. Каждый из них играет свою роль:

  • методы экземпляра управляют поведением конкретных объектов,
  • методы класса оперируют самим классом как сущностью,
  • специальные методы позволяют переопределить стандартное поведение объектов.

Знание этих различий помогает лучше управлять логикой программ. Далее пробежимся по всем трем типам.

2. Классификация методов объектов в Python

2.1. Методы экземпляра

Определение

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

Роль self

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

Примеры использования

class User:
def __init__(self, name):
self.name = name
def greet(self):
return f"Привет, {self.name}!"

В этом примере метод greet() обращается к атрибуту name через self. То есть, раз у каждого объекта класса User есть имя name, его можно получить через self.name.

Как через self обращаться к атрибутам и другим методам объекта

С помощью self можно:

  • читать и изменять атрибуты объекта,
  • вызывать другие методы того же экземпляра:
class Example:
def method_one(self):
print("Метод один")
def method_two(self):
self.method_one() # Вызов другого метода через self

2.2. Методы класса (class methods)

Объявление с помощью @classmethod

Методы класса объявляются с помощью декоратора @classmethod. Вместо self они получают первым параметром cls — ссылку на сам класс, а не на конкретный объект.

Роль cls

Параметр cls используется для доступа к атрибутам и методам самого класса.

Примеры: доступ к атрибутам класса, альтернативные конструкторы

class Product:
tax_rate = 0.2
def __init__(self, price):
self.price = price
@classmethod
def with_tax(cls, price_with_tax):
base_price = price_with_tax / (1 + cls.tax_rate)
return cls(base_price)

Метод with_tax() создает новый объект, используя знание о налоговой ставке — атрибуте класса.

Отличие от методов экземпляра

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

2.3. Специальные (магические) методы

Что такое специальные методы (дандеры)

Специальные методы в Python (или "магические", или "дандеры" — от double underscore) — это методы, имена которых начинаются и заканчиваются двойным подчёркиванием, например __init__, __str__. Они вызываются Python автоматически в определённых ситуациях.

Когда и зачем они вызываются автоматически

Эти методы позволяют кастомизировать стандартное поведение объектов:

  • создание (__init__)
  • преобразование в строку (__str__)
  • вычисление длины (__len__)
  • сравнение (__eq__) и другие.

Примеры популярных методов

  • __init__(self, ...) — вызывается при создании объекта.
  • __str__(self) — определяет строковое представление, например, в print().
  • __len__(self) — вызывается функцией len().
  • __eq__(self, other) — вызывается при сравнении ==.

Польза от переопределения специальных методов

Переопределяя специальные методы, вы можете:

  • контролировать, как объекты создаются, отображаются и сравниваются,
  • интегрировать свои классы с базовыми операциями Python,
  • создавать выразительные и читаемые API.

3. Как получить только методы у объекта в Python?

Обзор способов получения методов

Часто возникает задача: как вывести список методов объекта или узнать методы объекта python. Например, при отладке или исследовании стороннего кода.

Для этого в Python есть несколько инструментов, включая стандартную функцию dir() и модуль inspect.

Функция dir()

dir(obj) возвращает список всех атрибутов и методов объекта:

print(dir(obj))

Однако результат включает как методы, так и данные, а также наследуемые члены. Чтобы выделить только методы, нужно фильтровать список.

Как фильтровать только методы

Использование inspect.ismethod и inspect.isfunction

Модуль inspect позволяет различать функции, методы, атрибуты и другие типы объектов:

import inspect
methods = [name for name, value in inspect.getmembers(obj, inspect.ismethod)]

Если объект — экземпляр класса, лучше использовать inspect.ismethod. Если вы работаете с самим классом, подойдёт inspect.isfunction.

Заключение

Подведение итогов: виды методов, способы получения списка

В Python существует три основных типа методов объектов:

  • Методы экземпляра — используют self, работают с конкретным объектом;
  • Методы класса — используют cls, работают с самим классом;
  • Специальные методы — начинаются и заканчиваются двойным подчёркиванием и вызываются автоматически.

Для того чтобы узнать методы объекта в Python, можно использовать dir(), getattr() и модуль inspect. Это полезно при отладке, написании документации, тестировании и изучении кода.

Часто задаваемые вопросы (FAQ)

Как узнать, какие методы есть у объекта в Python?

Используйте dir(obj) или inspect.getmembers(obj, inspect.ismethod) для получения списка доступных методов.

Чем отличается метод класса от метода экземпляра?

Метод класса работает с классом как с объектом (cls), метод экземпляра — с конкретным экземпляром (self). Методы класса объявляются с помощью декоратора @classmethod.

Как получить список всех методов объекта Python?

С помощью модуля inspect:

import inspect
methods = [name for name, func in inspect.getmembers(obj, inspect.ismethod)]

Или с фильтрацией через dir() и callable().