Một đối tượng như một cấu trúc lý thuyết rất đơn giản: Đó là một cấu trúc lưu trữ dữ liệu, chức năng hoặc cả hai. Ý tưởng là các cấu trúc này có ý nghĩa về "bản thân", ẩn trong hầu hết các ngôn ngữ bên ngoài Python. Đây được gọi là "mô tả" và cung cấp cho đối tượng một điểm tự tham chiếu liên kết dữ liệu (biến hoặc trường) và các hàm (thường được gọi là phương thức) với đối tượng cụ thể được đề cập. Ý tưởng là bạn đang sử dụng một biến hoặc phương thức cụ thể thuộc về trường hợp cụ thể đó (khối bộ nhớ được phân bổ thường ở bên dưới) thay vì một số cấu trúc tổng quát hơn, lớn hơn.
Các hệ thống đối tượng có xu hướng thay đổi liên quan đến hai loại lớn: Kế thừa và Truy cập.
Một số, như Java hoặc C ++, bạn có khai báo các lớp đóng vai trò là "bản thiết kế" cho các đối tượng sau đó được phân bổ. Các lớp này và các đối tượng của chúng không thể được sửa đổi cấu trúc một khi được khởi tạo. Họ có thể có nội dung của họ bị ghi đè theo nghĩa các biến có thể thay đổi nhưng cấu trúc của chúng là tĩnh. Ví dụ, bạn không thể thêm các phương thức mới vào HashMap trong Java. Bạn có thể mở rộng giao diện (về cơ bản là các lớp được triển khai dưới dạng hợp đồng) hoặc tạo một lớp con để có được các phương thức hoặc biến bổ sung mà bạn cần cùng với tất cả các biến và phương thức ban đầu của lớp cụ thể được đề cập.
Các ngôn ngữ dựa trên lớp khác, ngôn ngữ được trích dẫn điển hình nhất là Ruby, cho phép bạn dễ dàng mở một lớp hiện có và chỉ cần thêm các phương thức khi bạn thấy phù hợp. Đây là một xương của sự tranh chấp và được nhiều người coi là rất, rất nguy hiểm.
Javascript thậm chí còn lỏng lẻo hơn, Đối tượng không có gì khác ngoài một bộ sưu tập các vị trí cho các biến hoặc hàm. Chúng có thể được thay đổi hoặc ghi đè bất cứ khi nào lập trình viên cảm thấy cần phải làm như vậy. Chúng thậm chí có thể được nhân bản tùy ý thành "Nguyên mẫu" cho các đối tượng khác, do đó chuyển tất cả các khả năng của chúng vào.
Kiểm soát truy cập là điểm khác biệt lớn khác giữa các ngôn ngữ khác nhau.
Một số ngôn ngữ như Java có các bộ sửa đổi truy cập được thi hành rất nghiêm ngặt như "riêng tư" và "được bảo vệ", xác định chính xác những lớp và lớp con nào có thể sử dụng một biến hoặc phương thức đã cho.
Những người khác, chẳng hạn như Python ít trang trọng hơn, sử dụng quy ước của dấu gạch dưới trước phương thức hoặc tên biến để chỉ ra rằng nó là riêng tư.
Cuối cùng, Python là một ngôn ngữ hoàn toàn hợp pháp để lập trình theo kiểu hướng đối tượng, nó chỉ không thực thi nó một cách nghiêm ngặt như một số ngôn ngữ khác.