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

Класс и атрибуты класса

Класс идет рука об руку с принципом инкапсуляции объектно-ориентированного программирования, в котором каждый объект должен быть ограничен определенной областью действия. Класс — это поле, а объекты — это те, кто играет в нем. Думайте о классе как о чертеже, чтобы построить что-то, наиболее распространенным примером является чертеж дома.

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

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

Когда дело доходит до атрибутов класса в Python, вы обнаружите, что они относятся к переменной, принадлежащей классу, а не к конкретному объекту (например, внутри метода класса). Атрибуты определяются вне любого объекта и до конструктора класса (идентифицируемого в Python методом __init__).

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

На изображении выше показано, как мы объявляем класс с именем «ClassDeclared», который содержит атрибут с именем «class_variable» и инициализируется равным 0. Позже мы можем найти конструктор, идентифицированный методом __init__.

Объекты и атрибуты объектов

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

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

В Python вы можете использовать классы для создания объектов этого типа, подумайте об этом, как если бы вы объявляли переменную в C, где вы объявляете тип переменной с помощью «int», а затем даете ему имя. Здесь вы можете сделать что-то подобное с классами.

Здесь произошло то, что мы только что создали объект с именем «объект», который будет содержать атрибуты и методы, содержащиеся в «ClassDeclared». Теперь наш объект унаследует характеристики класса, поэтому, если бы это был дом, мы бы просто создали новый дом со всеми деталями, содержащимися в чертеже (классе).

Разница между атрибутами объекта и класса:

Основное различие между ними, кроме того факта, что объекты и классы имеют разные концепции, заключается в том, что атрибут объекта (или экземпляра) относится только к переменной, которая принадлежит объекту и объявлена ​​внутри метода __init__ вашего класса, чаще всего известный в других языках как конструктор.

С другой стороны, атрибут класса — это переменная, которая должна быть объявлена ​​вне любого другого объекта (имея в виду методы в данном случае), чтобы она принадлежала классу в целом; это почти как мини-глобальная переменная, которую можно инициализировать желаемым значением или символом для использования в любом методе (объекте) внутри класса.

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

Но не все это радуга и бабочки, недостатком в этом случае является то, что иногда бывает трудно отслеживать каждый созданный вами класс и метод, поэтому все должно быть аккуратно организовано и с надлежащими примечаниями. Кроме того, но не что-то существенное, концепцию может быть труднее понять из-за ее абстрактности, чем процедурный тип кодирования.

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

Надеюсь у тебя хороший день!

S.