Python Sınıfları ve Nesneleri [Örneklerle]

Yayınlanan: 2021-06-25

OOP - Nesneye Yönelik Programlama'nın kısaltması - işlevsel programlar oluşturmak için nesnelere ve sınıflara dayanan bir paradigmadır. OOP'ler kodun modülerliği üzerinde çalışır ve sınıflar ve nesneler, daha büyük yazılım özellikleri ve modülleri oluşturmak için kullanılabilecek yeniden kullanılabilir, basit kod parçalarının yazılmasına yardımcı olur. C++, Java ve Python, en yaygın kullanılan üç Nesne Yönelimli Programlama dilidir. Ancak, Veri Bilimi ve İstatistiksel Analiz gibi günümüzün kullanım durumları söz konusu olduğunda, Python diğer ikisini geride bırakıyor.

Dünya çapındaki Veri Bilimcileri, Python programlama dilinin yeteneklerine yemin ettiğinden, bu şaşırtıcı değil. Veri Biliminde bir kariyere başlamayı planlıyorsanız ve Python'da ustalaşmak istiyorsanız, sınıflar ve nesneler hakkında bilgi sahibi olmak ilk önceliğiniz olmalıdır.

Bu makale aracılığıyla, Python'daki nesnelerin ve sınıfların arkasındaki tüm nüansları ve kendi sınıflarınızı oluşturmaya ve onlarla çalışmaya nasıl başlayabileceğinizi anlamanıza yardımcı olacağız.

İçindekiler

Python'daki Sınıflar

Python'da bir sınıf, hangi nesnelerin yaratıldığını kullanan kullanıcı tanımlı bir prototiptir. Basitçe söylemek gerekirse, sınıf, verileri ve işlevleri bir araya getirmek için bir yöntemdir. İki anahtar kelimeye dikkat etmek önemlidir. Veri, somutlaştırılan veya tanımlanan herhangi bir değişken anlamına gelirken, işlevsellik, bu veriler üzerinde gerçekleştirilebilecek herhangi bir işlem anlamına gelir. Tek bir paket altında toplanan veriler ve işlevlerle birlikte sınıflar elde ederiz.

Bir sınıf oluşturma ihtiyacını anlamak için aşağıdaki basit örneği inceleyin. Diyelim ki mahallenizdeki yaş, cins, renk, ağırlık vb. gibi farklı özelliklere sahip kedileri takip etmek istiyorsunuz. Bir listeyi kullanabilir ve öğeleri 1'e 1 şekilde takip edebilirsiniz, yani cinsine kadar takip edebilirsiniz. yaş veya yaş listesi kullanarak kilo. Ya 100 farklı kedi olması gerekiyorsa? Ya eklenecek daha fazla özellik varsa? Böyle bir senaryoda, listeleri kullanmak düzensiz ve dağınık olma eğilimindedir.

İşte tam da bu noktada sınıflar devreye giriyor!

Sınıflar, kendi veri üyelerine (değişkenlerine) ve üye işlevlerine sahip kullanıcı tanımlı bir veri yapısı oluşturmanıza yardımcı olur. Bu değişkenlere ve yöntemlere yalnızca sınıf için bir nesne oluşturarak erişebilirsiniz (bunun hakkında daha sonra konuşacağız). Yani, bir anlamda, sınıflar tıpkı bir nesne için bir plan gibidir.

Ayrıca, sınıflar oluşturmak otomatik olarak yeni bir nesne türü oluşturur; bu, aynı türden daha fazla nesne oluşturmanıza olanak tanır. Her sınıf örneğinin, durumunu korumak için kendisine eklenmiş nitelikleri olabilir. Sınıf örneklerinin kendileri, durumu değiştirmek için yöntemlere (sınıfları tarafından tanımlandığı gibi) sahip olabilir.

Python sınıfında bazı noktalar:

  • Sınıflar, sınıf anahtar sözcüğü kullanılarak oluşturulur .
  • Nitelikler, oluşturduğunuz sınıfa özgü değişkenlerdir.
  • Bu nitelikler doğası gereği her zaman geneldir ve sınıf adından sonra nokta operatörü kullanılarak erişilebilir. Örneğin, ClassName.AttributeName size o belirli sınıfın belirli öznitelik ayrıntısını getirecektir.

Bir sınıf tanımlamak için sözdizimi:

sınıfSınıfAdı:

# İfade-1

.

.

.

# İfade-N

Örneğin:

sınıf kedisi:

geçmek

Yukarıdaki örnekte, class anahtar sözcüğü, bir sınıf oluşturduğunuzu ve ardından sınıfın adının geldiğini belirtir (bu durumda Cat). Bu sınıfın rolü henüz tanımlanmadı.

Python'da Class kullanmanın avantajları

  • Sınıflar, tüm farklı veri türlerini tek bir yerde düzgün bir şekilde organize etmenize yardımcı olur. Bu şekilde kodu temiz ve modüler tutar, kodunuzun okunabilirliğini artırırsınız.
  • Sınıfları kullanmak, Kalıtım adı verilen başka bir OOP paradigmasından yararlanmanıza olanak tanır. Bu, bir sınıfın başka bir sınıfın özelliklerini miras aldığı zamandır.
  • Sınıflar, herhangi bir standart operatörü geçersiz kılmanıza izin verir.
  • Sınıflar, kodunuzu yeniden kullanılabilir hale getirir ve bu da programınızı çok daha verimli hale getirir.

Python'daki nesneler

Bir nesne, tanımladığınız herhangi bir sınıfın bir örneğidir. Bir sınıf oluşturduğunuzda, otomatik bir örnek zaten oluşturulur. Böylece, örnekte olduğu gibi, Cat sınıfı, gerçek bir kedi gibi bir nesneyi otomatik olarak başlatır – İran ırkından ve 3 yaşında. Farklı özelliklere sahip birçok farklı kedi örneğine sahip olabilirsiniz, ancak mantıklı olması için rehberiniz olarak bir sınıfa ihtiyacınız olacak. Aksi takdirde, hangi bilgilerin gerekli olduğunu bilmeden kaybolmuş hissedeceksiniz.

Bir nesne genel olarak üç şeyle tanımlanır:

  • Durum: Bu, herhangi bir nesnenin çeşitli niteliklerini ve gösterebileceği çeşitli özellikleri ifade eder.
  • Davranış: Bu, temel olarak o nesnenin yöntemlerini belirtir. Ayrıca, bu belirli nesnenin diğer nesnelerle nasıl etkileşime girdiğini veya bunlara nasıl tepki verdiğini de yansıtır.
  • Kimlik: Kimlik, gerektiğinde ve gerektiğinde çağrılabilecek nesnenin benzersiz adıdır.

1. Nesnelerin Bildirilmesi

Nesnelerin bildirilmesi, bir sınıfın somutlaştırılması olarak da bilinir, çünkü bir sınıfı tanımlar tanımlamaz, kendi içinde bir varsayılan nesne oluşturulur (daha önce gördüğümüz gibi) - bu, o sınıfın örneğidir. Benzer şekilde, her nesne oluşturduğunuzda, aslında sınıfınızın yeni bir örneğini yaratmış olursunuz.

Daha önce bahsettiğimiz üç şey (durum, davranış, kimlik) açısından, tüm örnekler (nesneler) davranış ve durumu paylaşır, ancak kimlikleri farklıdır. Tek bir sınıf, programcının gerektirdiği şekilde herhangi bir sayıda nesneye sahip olabilir.

Aşağıdaki örneği inceleyin. İşte sınıfların nasıl başlatılacağını açıklayan bir program.

sınıf kedisi:

# Basit bir sınıf

# bağlanmak

attr1 = "kedi"

attr2 = "kedi"

# Örnek bir yöntem

def fun(self):

print(“Ben”, self.attr1)

print(“Ben”, self.attr2)

# Sürücü kodu

# Nesne somutlaştırma

Tom = kedi()

# Sınıf özelliklerine erişim

# ve nesneler aracılığıyla yöntem

yazdır(Tom.attr1)

Tom.fun();

Bu basit programın çıktısı aşağıdaki gibi olacaktır:

Kedi

ben bir kediyim

ben bir kediyim

Gördüğünüz gibi, önce cat adında bir sınıf yarattık ve ardından 'Tom' adında bir nesne başlattık. Aldığımız üç çıktı şu şekildeydi:

  • Feline – bu, print(Tom.attr1) ifadesinin sonucuydu. Tom, Cat sınıfının bir nesnesi olduğundan ve attr1 Feline olarak ayarlandığından, bu fonksiyon Feline çıktısını döndürür.
  • Ben bir kediyim – Tom.fun(); cat sınıfında 'eğlence' olarak bilinen bir işlevi çağırmak için Tom adlı nesneyi kullanır. Tom nesnesi, işlevin niteliklerini beraberinde getirir ve bu nedenle işlev, şu iki cümleyi verir – “Ben bir kediyim”.
  • Ben bir kediyim – yukarıda belirtilen nedenin aynısı.

Artık Python'da sınıfların ve nesnelerin nasıl çalıştığını anladığınıza göre, bazı temel yöntemlere bakalım.

2. Öz Yöntem

Herhangi bir sınıfta tanımlanan tüm yöntemlerin, işlev tanımında fazladan bir birinci parametreye sahip olması gerekir. Bu parametreye programcı tarafından herhangi bir değer atanmaz. Ancak metot çağrıldığında Python ona bir değer sağlar.

Sonuç olarak, argüman içermeyen bir fonksiyon tanımlarsanız, teknik olarak hala bir argümanı vardır. Buna Python'da 'self' denir. Bunu daha iyi anlamak için Pointer kavramlarınızı C++'da revize edebilir veya Java'da bunlara başvurabilirsiniz. Self yöntemi temelde aynı şekilde çalışır.

Bunu daha iyi anlamak için – bir nesnenin herhangi bir yöntemini çağırdığımızda, örneğin:

myObject.myMethod(arg1, arg2), Python bunu otomatik olarak myClass.myMethod(myObject, arg1, arg2) biçimine dönüştürür.

Gördüğünüz gibi, nesnenin kendisi yöntemin ilk argümanı olur. Python'daki benlik bununla ilgilidir.

3. __init__ yöntemi

Bu yöntem, Java veya C++'daki yapıcılara benzer. Yapıcılar gibi init yöntemi de bir nesnenin durumunu başlatmak için kullanılır. Bu, nesne oluşturma sırasında yürütülen bir talimatlar (ifadeler) koleksiyonunu içerir. Bir sınıf için bir nesne başlatıldığında, init yöntemi sizin başlattığınız yöntemleri otomatik olarak çalıştırır.

İşte bunu daha iyi açıklamak için bir kod parçası:

# init yöntemiyle bir Örnek sınıf

sınıf Kişi:

# init yöntemi veya yapıcısı

def __init__(kendi, isim):

self.name = isim

# Örnek Yöntem

def say_hi(self):

print('Merhaba, benim adım', self.name)

p = Kişi(“Sam”)

p.say_hi()

Çıktı:

Merhaba benim adım Sam

Dünyanın en iyi Üniversitelerinden çevrimiçi veri analizi kurslarını öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Sınıf ve Örnek Değişkenleri

Örnek değişkenleri her bir örnek için benzersizdir, oysa sınıf değişkenleri bir sınıfın tüm örnekleri tarafından paylaşılan yöntemler ve nitelikler içindir. Sonuç olarak, örnek değişkenler temel olarak değeri bir yapıcı veya self ile bir yöntem içinde atanan değişkenlerdir. Öte yandan, sınıf değişkenleri, değerleri bir sınıf içinde atananlardır.

Örnek değişkenlerin bir kurucu (init yöntemi) kullanılarak nasıl tanımlandığını anlamak için aşağıdaki kodu gözden geçirin:

sınıf kedisi:

# Sınıf Değişkeni

hayvan = 'kedi'

# init yöntemi veya yapıcısı

def __init__(kendi, cins, renk):

# Örnek değişkeni

self.breed = cins

self.color = renk

# Köpek sınıfının nesneleri

Tom = kedi(“Farsça”, “siyah”)

Karlı = kedi(“Bağımsız”, “beyaz”)

print(“Tom ayrıntıları:')

print('Tom bir', Tom.hayvan)

print('Irk: ', Tom.breed)

print('Renk:', Tom.color)

print('\nKarlı ayrıntılar:')

print(“Karlı bir is', Karlı.hayvan)

print('Irk: ', Snowy.breed)

print('Renk: ', Karlı.renk)

Yukarıdaki kodu satır satır takip ederseniz, alacağınız çıktı şudur:

Çıktı:

Tom'un ayrıntıları:

Tom bir kedidir

Cins: Farsça

Siyah renk

Karlı detaylar:

Karlı bir kedidir

Cins: Bağımsız

Beyaz renk

Sonuç olarak

Python, özellikle yeni başlayanlar için nispeten daha kolay bir programlama dilidir. Temel bilgilerde uzmanlaştıktan sonra, çeşitli Python kitaplıkları ile çalışmaya ve verilere özel sorunları çözmeye hazır olacaksınız. Ancak, yolculuk sınıfları ve nesneleri anlamakla başlarken, farklı nesneler, sınıflar ve bunların nüanslarıyla nasıl çalışılacağını da öğrenmeniz gerektiğini unutmayın.

Bu makalenin Python'daki sınıflar ve nesneler hakkındaki şüphelerinizi netleştirmeye yardımcı olduğunu umuyoruz. Herhangi bir sorunuz varsa, lütfen aşağıya bir yorum bırakın - size çok yakında geri döneceğiz!

Bir kariyer değişikliği arıyorsanız ve profesyonel yardım arıyorsanız - upGrad sizin için burada. IIIT-B ile işbirliği içinde sunulan Veri Biliminde Yönetici PG Programımıza göz atın . 30'dan fazla sektörle ilgili projeye erişim kazanırken 14'ten fazla programlama dili ve aracı (Python dahil) ile tanışın. Herhangi bir akıştan öğrenciler, lisanslarında en az %50 puan almaları koşuluyla bu programa kayıt olabilirler.

85'ten fazla ülkede sağlam bir öğrenci tabanımız, dünya çapında 40.000'den fazla ücretli öğrencimiz ve 500.000'den fazla mutlu çalışan profesyonelimiz var. 360 derecelik kariyer yardımımız, küresel öğrencilerle çalışma ve beyin fırtınası yapma deneyimiyle birleştiğinde, öğrenme deneyiminizden en iyi şekilde yararlanmanızı sağlar.

Python'da sınıflar ve nesneler nelerdir?

Sınıf, bir varlığın özelliklerini ve işlevlerini bağlayan bir şablon veya plandır. Python'da, bir sınıfı tanımlamak için sınıf anahtar sözcüğü kullanılır. Benzer niteliklere sahip tüm varlıklar veya nesneler tek bir sınıfa konulabilir ve üye işlevler tarafından erişilebilir.
Bir nesne, bir sınıfın örneğidir. Bir sınıf oluşturulduktan sonra, nesneler o sınıfın tüm bilgilerini alır. Tıpkı gerçek değerlere sahip saygın sınıfın bir kopyası gibidir. Bir nesne üç faktöre göre sınıflandırılır:
a. Belirtmek, bildirmek
B. Davranış
C. Kimlik

Python hangi programlama paradigmasını takip ediyor?

Python'un izlediği dört ana ayırt edilebilir paradigma vardır - nesne yönelimli, prosedürel, işlevsel ve zorunlu. Python, nesne yönelimli kavramları güçlü bir şekilde destekler; ancak, tamamen nesne yönelimli bir programlama dili değildir.
Çeşitli programlama paradigmalarını desteklemenin nedeni, CoffeeScript gibi bazı betiklerden ve Ruby gibi nesne yönelimli programlama dillerinden belirgin şekilde etkilenmesidir. Ayrıca verimliliği ve hesaplama gücünü artırmak için R gibi dillerle birleşir.
Çok paradigmalı bir dil olan Python'un en çok yönlü dillerden biri olduğuna inanılıyor. Geliştirme, veri analizi, web kazıma ve otomasyon için yaygın olarak kullanılır.

Python'da erişim değiştiricileri nelerdir?

Diğer nesne yönelimli programlama dillerine benzer şekilde, Python'daki bir sınıfın da üç erişim değiştiricisi vardır:
a. Public Access Modifier : public olarak belirtilen sınıf üyelerine, herhangi bir fonksiyon tarafından, yani üye fonksiyonların yanı sıra üye olmayan fonksiyonlar tarafından doğrudan erişilebilir. Erişim belirteci belirtilmezse, tüm sınıf üyeleri derleyici tarafından varsayılan olarak genel üyeler olarak kabul edilir.
B. Özel Erişim Değiştirici : Bu sınıf üyeleri, diğer sınıf üyelerinden gizlenir. Yalnızca tanımlandıkları sınıfın üye işlevleri tarafından erişilebilirler.
C. Korumalı Erişim Değiştirici : Korumalı olarak belirtilen sınıf üyelerine yalnızca aynı sınıfın üye işlevleri tarafından erişilebilir ve sınıf dışından erişilmeye çalışılırsa hata verir. Özel ve korumalı erişim belirteci arasındaki tek büyük fark, özel üyeler devralınamazken, korunan üyelerin devralınabilmesidir.