Об'єкт як теоретична конструкція дуже простий: це структура, яка зберігає дані, функції або те і інше. Ідея полягає в тому, що ці структури мають відчуття «самості», яке мається на увазі у більшості мов поза Python. Це називається "дескриптором" і надає об'єкту точку самопосилання, яка пов'язує дані (змінні або поля) та функції (зазвичай називаються методами) до конкретного конкретного об'єкта. Ідея полягає в тому, що ви спеціально використовуєте змінну або метод, що належить до цього конкретного примірника (виділений блок пам'яті, як правило, під ним), а не якусь більшу, більш загальну конструкцію.
Об'єктні системи, як правило, відрізняються від двох великих категорій: Спадщина та Доступ.
Деякі, наприклад, Java або C ++, ви оголошуєте класи, які діють як "креслення" для об'єктів, які потім виділяються. Ці класи та їх об'єкти не можуть бути структурно модифіковані одноразово. Їх вміст може бути перекрито, оскільки змінні можуть змінюватися, але їх структура є статичною. Наприклад, ви не можете додавати нові методи до HashMap на Java. Ви можете розширити інтерфейс (в основному частково реалізовані класи, що виконуються як контракти) або скласти підклас, щоб отримати необхідні вам додаткові методи або змінні разом із усіма оригінальними змінними та методами відповідного класу.
Інші мови, що базуються на класах, найчастіше цитується як Ruby, дозволяють легко відкривати існуючий клас та просто додавати методи, як вважаєте за потрібне. Це кістка суперечки і багато хто вважає її дуже і дуже небезпечною.
Javascript навіть втрачає більше, об'єкти - це не що інше, як сукупність слотів для змінних чи функцій. Вони можуть бути змінені або перезаписані, коли програміст відчує потребу в цьому. Вони навіть можуть бути довільно клоновані як "прототипи" для інших об'єктів, тим самим передаючи всі свої здібності.
Контроль доступу - це інша велика різниця між різними мовами.
Деякі мови, такі як Java, мають суворо застосовані модифікатори доступу, такі як "приватний" та "захищений", які точно визначають, для яких класів та підкласів можна використовувати певну змінну чи метод.
Інші, наприклад, Python, є менш формальними, використовуючи умову підкреслення перед методом або ім'ям змінної, щоб вказати, що воно є приватним.
Зрештою, Python - це цілком законна мова для програмування об'єктно-орієнтованим способом, вона просто не застосовує її настільки суворо, як деякі інші.