Teorik bir yapı olarak bir nesne çok basittir: Verileri, işlevleri veya her ikisini birden saklayan bir yapıdır. Bu yapıların Python dışındaki birçok dilde örtük olan bir “benlik” duygusu olduğu fikri. Buna "tanımlayıcı" denir ve nesneye verileri (değişkenler veya alanlar) ve işlevleri (genellikle yöntemler olarak adlandırılır) söz konusu nesneye bağlayan bir öz referans noktası verir. Fikir, daha büyük, daha genel bir yapıdan ziyade, belirli bir örneğe (tipik olarak altındaki bellek bloğu) ait olan bir değişken veya yöntem kullanmanızdır.
Nesne sistemleri iki büyük kategoriye göre farklılık gösterir: Kalıtım ve Erişim.
Java veya C ++ gibi bazıları, daha sonra tahsis edilen nesneler için "taslak" görevi gören sınıflar beyan ettiniz. Bu sınıflar ve nesneleri, somutlaştırıldıktan sonra yapısal olarak değiştirilemez. Değişkenlerin değişebileceği anlamında içerikleri geçersiz kılınabilir, ancak yapıları statiktir. Örneğin, Java'daki HashMap'e yeni yöntemler ekleyemezsiniz. Arabirimi genişletebilir (temel olarak sözleşmeler olarak uygulanan sınıflar) veya söz konusu belirli sınıfın tüm orijinal değişkenleri ve yöntemleriyle birlikte ihtiyacınız olan ekstra yöntemleri veya değişkenleri almak için bir alt sınıf yapabilirsiniz.
En tipik olarak Ruby olan diğer sınıf tabanlı diller, mevcut bir sınıfı kolayca açmanıza ve uygun gördüğünüz gibi yöntemler eklemenize olanak tanır. Bu bir çekişme kemiğidir ve birçok kişi tarafından çok, çok tehlikeli olarak kabul edilir.
Javascript daha gevşek, Nesneler ya değişkenler ya da fonksiyonlar için bir yuvalar topluluğundan başka bir şey değildir. Programcı buna ihtiyaç duyduğunda, değiştirilebilir veya üzerine yazılabilirler. Hatta diğer nesneler için keyfi olarak "Prototipler" olarak klonlanabilirler, böylece tüm yeteneklerini aktarabilirler.
Erişim kontrolü, çeşitli diller arasındaki diğer büyük fark noktasıdır.
Java gibi bazı diller, belirli bir değişken veya yöntemi tam olarak hangi sınıfların ve alt sınıfların kullanabileceğini tanımlayan "özel" ve "korumalı" gibi çok sıkı bir şekilde zorlanmış erişim değiştiricilerine sahiptir.
Python gibi diğerleri, özel olduğunu belirtmek için yöntemden veya değişken adından önce bir alt çizgi kullanarak daha az resmidir.
Nihayetinde, Python nesne yönelimli bir şekilde programlamak için mükemmel bir meşru dildir, sadece diğerleri kadar titizlikle uygular.