Чем метод отличается от функции в Python?

Аватар пользователя Карина Абдуллаева
Карина Абдуллаева
13 февраля 2023

Метод по сути это та же функция, но так как она определена внутри класса, и первым её аргументом является self, то она становится связанным методом bound method, получившим доступ к атрибутам связанного объекта (экземпляра класса).

# Обычная функция:
def greet(name):
    print(f'Hello, {name}')

class Person:
    # Инициализатор класса, требующий присваивать значение атрибута name при инстанцировании объекта
    def __init__(self, name):
        self.name = name

    # Связанный метод, имеющий доступ к атрибуту name:
    def greet(self):
        print(f'Hello , {self.name}!!!')


bob = Person('Bob')

# Вызов связанного метода класса:
bob.greet() # => Hello , Bob!!!

# Вызов функции, не имеющий доступа к атрибутам объекта:
greet(bob) # => Hello, <__main__.Person object at 0x7fadcfdf7d00>

# Вызов обычной функции, которой можно передать любое значение:
greet('Bob') # => Hello, Bob
greet(23) # => Hello, 23
greet('apple') # => Hello, apple

2 0
Аватар пользователя Maksim Litvinov
Maksim Litvinov
20 марта 2024

В Python методы и функции имеют некоторые ключевые различия, которые важно понимать.

Функции в Python:

Функции в Python - это блок кода, который выполняет определенную задачу при вызове.

  • Функции могут быть определены с помощью ключевого слова def.
  • Они могут принимать аргументы и возвращать значения с помощью return.
  • Функции могут вызываться независимо от какого-либо объекта.

Пример функции в Python:

def add_numbers(a, b):
    return a + b

result = add_numbers(5, 3)
print(result)

Методы в Python:

Методы - это функции, связанные с объектами. Они вызываются на конкретных объектах и могут изменять состояние объекта.

  • Методы определяются внутри классов и могут обращаться к данным объекта через ключевое слово self.
  • Методы могут выполнять операции над данными объекта.

Пример метода в Python:

class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print("Привет, меня зовут", self.name)

person = Person("Alice")
person.greet() #=> Привет, меня зовут Alice

В примере функции add_numbers(a, b) мы определяем функцию для сложения двух чисел и возвращаем результат. Функция вызывается независимо от какого-либо объекта.

В примере метода greet(self) мы определяем метод greet внутри класса Person. Метод greet() используется для вывода приветствия с именем объекта Person. Метод вызывается на конкретном объекте person и обращается к его данным через self.

Различие между методами и функциями в Python заключается в том, что методы связаны с объектами и могут изменять их состояние, в то время как функции независимы от объектов.

1 0

В отличие от функции, метод узко специализирован и может быть применен только к объектам, которые его поддерживают. Например, метод списков append() может быть применен только к ним. Применение данного метода к другим объектам, которые его не поддерживают (строки или кортежи) вызовет ошибку. Но есть и такие методы, которые хорошо работают с несколькими типами объектов, например метод count()может применяться к строкам, спискам или кортежам

1 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.