self
), работают следующим образом:
self
: Первый аргумент метода класса (обычно называемый self
) является ссылкой на конкретный экземпляр класса, для которого этот метод вызывается.self.имя_атрибута
, метод может читать и изменять атрибуты, принадлежащие этому конкретному экземпляру.Методы класса, которые используют атрибуты экземпляра, работают следующим образом:
__init__
(если он определен). Внутри __init__
, либо в других методах, экземпляру присваиваются атрибуты. Эти атрибуты хранят данные, специфичные для данного конкретного экземпляра.
self
(но технически может быть назван как угодно, хотя соглашение об использовании self
настоятельно рекомендуется).
self
, можно получить доступ к атрибутам этого экземпляра. Например, self.имя_атрибута
. Если атрибут с таким именем существует у экземпляра, возвращается его значение. Если атрибута не существует, обычно возникает ошибка AttributeError
.
Пример:
class Dog:
species = "Canis familiaris" # Атрибут класса
def __init__(self, name, breed):
self.name = name # Атрибут экземпляра
self.breed = breed # Атрибут экземпляра
self.tricks = [] # Атрибут экземпляра (пустой список)
def add_trick(self, trick):
self.tricks.append(trick) # Изменение атрибута экземпляра
def describe(self):
return f"{self.name} is a {self.breed} and knows: {self.tricks}"
В этом примере:
species
- это атрибут класса.name
, breed
и tricks
- это атрибуты экземпляра.add_trick
изменяет атрибут экземпляра tricks
.describe
читает атрибуты экземпляра name
, breed
и tricks
.Таким образом, методы класса, использующие атрибуты экземпляра, позволяют манипулировать данными, специфичными для каждого объекта класса, обеспечивая гибкость и возможность представления различных состояний объектов.