Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

ООП. Классы и методы

Все темы Python Developer

Какие типы классов существуют в Python?

В Python 3 все классы наследуют object прямо или косвенно. Классы старого стиля относятся только к Python 2; метаклассы выполняют отдельную роль, создавая классы.

Новые стили классов (New-style classes):

  • Это классы, которые являются наследниками встроенного класса object.

  • В Python 3.x все классы автоматически являются новыми стилями.

Старые стили классов (Old-style classes):

  • Это классы, которые не являются наследниками класса object.

  • В Python 2.x классы старого стиля создавались без явного указания наследования от object.

Метаклассы (Metaclasses):

  • Это классы, экземпляры которых являются классами.

  • Они используются для управления созданием классов и их поведением.

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

В Python 3 классов старого стиля нет. Метаклассом по умолчанию служит type.


Что представляют собой “магические” методы в Python и какие виды магических методов существуют?

“Магические” методы в Python представляют собой специальные методы с двойными подчеркиваниями в начале и в конце своего имени. Они позволяют определить поведение объектов в различных ситуациях, таких как итерация, вызов функций, доступ к атрибутам и т. д. Некоторые из наиболее часто используемых магических методов включают __init__ для инициализации объекта, __str__ для представления объекта в виде строки, __len__ для определения длины объекта и многие другие.


В чем разница между методами __init__() и __str__()?

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

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


Что представляют собой геттеры и сеттеры?

Геттеры и сеттеры - это методы, используемые для доступа к атрибутам объекта.

Геттеры (getters):

  • Геттеры позволяют получать значение атрибута объекта.

  • Они обычно используются для получения значения приватных атрибутов.

  • Геттеры обеспечивают контролируемый доступ к данным объекта.

Сеттеры (setters):

  • Сеттеры позволяют устанавливать значение атрибута объекта.

  • Они используются для установки значения атрибута с дополнительной проверкой или обработкой.

  • Сеттеры обеспечивают контролируемое изменение данных объекта.

Использование геттеров и сеттеров помогает обеспечить инкапсуляцию данных и контролировать доступ к ним в объектно-ориентированном программировании.


Как сделать неизменяемый класс в Python?

Чтобы создать неизменяемый класс в Python, следует:
  1. Определить класс с помощью ключевого слова class.

  2. Использовать неизменяемые значения полей. Двойное подчёркивание меняет имя атрибута, но не запрещает его изменение.

  3. Создать методы только для чтения атрибутов класса (без методов для изменения значений).

  4. Переопределить методы __setattr__() и __delattr__(), чтобы они возбуждали исключение AttributeError, предотвращая изменение атрибутов класса.

  5. По желанию, переопределить метод __hash__(), если класс будет использоваться в качестве ключа в словарях или множествах.

Пример:
class ImmutableClass:
    def __init__(self, value):
        object.__setattr__(self, "_ImmutableClass__value", value)

    @property
    def value(self):
        return self.__value

    def __setattr__(self, name, value):
        raise AttributeError("ImmutableClass object does not support attribute assignment")

    def __delattr__(self, name):
        raise AttributeError("ImmutableClass object does not support attribute deletion")

    def __hash__(self):
        return hash(self.__value)

Что считается объектом в ООП?

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


Является ли функция объектом в Python?

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


Какой класс может создавать другие классы в Python?

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


Какой самый первый метакласс в Python?

В Python самый первый метакласс, который управляет созданием всех классов по умолчанию, называется type. Когда вы определяете новый класс в Python, интерпретатор автоматически использует метакласс type для создания этого класса.

Эта страница была полезной?