Python mirası

| | | | | | | | | | | | | | | | | |

Python mirası, bir alt sınıfın başka bir sınıfın kodunu kullanmasıdır. Kalıtım, Python gibi nesne yönelimli dillerde kodlamayı daha kolay ve daha verimli hale getiren önemli bir özelliktir.

Python nesne y√∂nelimli bir dildir, yani kodun daha verimli olmasƒ±na yardƒ±mcƒ± olmak için yeniden kullanƒ±labilir kod bloklarƒ± olu≈üturmayƒ± destekler. Bunun olmasƒ±nƒ±n yollarƒ±ndan biri, bir alt sƒ±nƒ±fƒ±n ba≈üka bir sƒ±nƒ±fƒ±n kodunu kullanabileceƒüi kalƒ±tƒ±mdƒ±r.

√ñrneƒüin, "banka hesaplarƒ±nƒ±‚" depolayan bir sƒ±nƒ±fƒ±nƒ±z olabilir ve bir sƒ±nƒ±f olu≈üturmak isteyebilirsiniz. "altƒ±n banka hesaplarƒ±nƒ±‚" "banka hesaplarƒ±nda‚" Mevcut sƒ±nƒ±f.

Bu √∂ƒüreticide, Python’da kalƒ±tƒ±mƒ±n temellerini inceleyeceƒüiz. Ayrƒ±ca, ust ve alt Python sƒ±nƒ±flarƒ±nƒ±n nasƒ±l çalƒ±≈ütƒ±ƒüƒ±nƒ± ve sƒ±nƒ±f nesneleriyle çalƒ±≈üƒ±rken √∂zniteliklerin ve y√∂ntemlerin nasƒ±l geçersiz kƒ±lƒ±nacaƒüƒ±nƒ± tartƒ±≈üacaƒüƒ±z.

Python Kalıtımı

Devralma bir terimdir. ba≈üka bir sƒ±nƒ±f içindeki bir Python sƒ±nƒ±fƒ±nƒ± tanƒ±mlamak için kullanƒ±lƒ±r. alt sƒ±nƒ±flar veya alt sƒ±nƒ±flar olarak adlandƒ±rƒ±lan sƒ±nƒ±flar, gerçek dunyada çocuklarƒ±n √∂zellikleri ebeveynlerinden devralmasƒ±na benzer ≈üekilde, ust sƒ±nƒ±flardan deƒüerleri devralabilir.

Devralma yararlƒ±dƒ±r, çunku bu turleri birden çok kez bildirmek zorunda kalmadan bir ust sƒ±nƒ±fla aynƒ± deƒüer turlerine sahip alt sƒ±nƒ±flar olu≈üturmamƒ±za olanak tanƒ±r.

Üst öğe. Sınıflar

Üst sınıflar (temel sınıflar olarak da adlandırılır) alt sınıfların erişebileceği ana yapıyı oluşturur. ust sınıftan sınıf yöntemleri.

Bunun nasƒ±l çalƒ±≈ütƒ±ƒüƒ±nƒ± g√∂stermek için bir √∂rnek kullanalƒ±m. ƒ∞ki farklƒ± banka hesabƒ± turuyle çalƒ±≈üan bir programƒ±mƒ±z olduƒüunu varsayalƒ±m: ebeveyn ve çocuk.

p>

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. amp bugun.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.

Bu hesaplarƒ±n ikisi de banka hesaplarƒ±dƒ±r ve bu nedenle benzer deƒüerlere sahip olacaklardƒ±r. Ancak bu hesaplarƒ±n her biri kendi benzersiz bilgilerini gerektirebilir. √ñrneƒüin, bir ebeveynin hesabƒ± kredili mevduatƒ± destekleyebilirken çocuƒüun hesabƒ± yalnƒ±zca kendi bakiyesiyle çalƒ±≈üabilir.

Dolayƒ±sƒ±yla, bu deƒüerlerle bir program olu≈üturmak istiyorsak, √∂nce ≈üunu tanƒ±mlarƒ±z: banka hesabƒ±mƒ±z için bir sƒ±nƒ±f (bir ust sƒ±nƒ±f), ardƒ±ndan desteklemek istediƒüimiz iki tur banka hesabƒ± için (ebeveyn ve çocuk) alt sƒ±nƒ±flar olu≈üturun.

ƒ∞≈üte bir ust sƒ±nƒ±f bildirme √∂rneƒüi bir banka hesabƒ± için:

√úç deƒüeri saklayan BankAccount sƒ±nƒ±fƒ±nƒ± olu≈üturduk: ad, soyad ve bakiye. Ayrƒ±ca sƒ±nƒ±fƒ±mƒ±za ≈üu ≈üekilde y√∂ntemler ekleyebiliriz:

Sƒ±nƒ±fƒ±mƒ±z ≈üimdi uç deƒüeri ve iki yeni y√∂ntemi saklƒ±yor: ayrƒ±ntƒ±lar ve denge. detaylar y√∂ntemi hesap sahibinin adƒ±nƒ± ve soyadƒ±nƒ± √∂ƒürenmek için kullanƒ±labilir ve denge y√∂ntemi hesap sahibinin bakiyesini d√∂ndurur.

BankAccount sınıfımızda bildirdiğimiz her yöntem ve değişken, alt sınıfımızda erişilebilir olacaktır.

√ñrneklemek için Eylemdeki sƒ±nƒ±fƒ±mƒ±z, √∂rnek bir banka hesabƒ± olu≈üturalƒ±m. Bunu a≈üaƒüƒ±daki kodu kullanarak yapabiliriz:

Bu, John Appleseed için 100$ içeren bir hesap olu≈üturacaktƒ±r. ≈ûimdi hesabƒ±mƒ±z hazƒ±r olduƒüuna g√∂re, diƒüer sƒ±nƒ±flarda yaptƒ±ƒüƒ±mƒ±z gibi ona referans vermeye ba≈ülayabiliriz.ƒ∞≈üte banka hesabƒ±mƒ±zda ne kadar para olduƒüunu √∂ƒürenmek için getBalance() y√∂ntemini çalƒ±≈ütƒ±rdƒ±ƒüƒ±mƒ±za bir √∂rnek. elimizdeki para:

Programımız şunu döndurur:

Alt Sınıflar

Yukarƒ±daki √∂rnekte, banka hesaplarƒ±nƒ± saklayan bir ust sƒ±nƒ±f ilan ettik. Ancak, 18 ya≈üƒ±ndan kuçuk bir çocuƒüun hesabƒ± gibi belirli bir hesap turu hakkƒ±nda bilgi depolamak istersek ne olur? Alt sƒ±nƒ±flar burada devreye girer.

Alt sınıflar veya alt sınıflar, ust sınıftan değerleri devralır. Bu, her alt sınıfın ust sınıfımızda bildirdiğimiz yöntemlere ve değişkenlere başvurabileceği anlamına gelir.

√ñyleyse, bir ChildBankAccount için bir alt sƒ±nƒ±f olu≈üturmak istediƒüimizi varsayalƒ±m. . Bu hesap, kullanƒ±cƒ±nƒ±n banka hesabƒ± bilgilerini‚Äîadƒ±nƒ± ve bakiyesini‚Äîve ayrƒ±ca kƒ±sƒ±tlƒ± adlƒ± yeni bir deƒüere sahip olmalƒ±dƒ±r. Bu deƒüer, 18 ya≈üƒ±n altƒ±nda olduklarƒ± ve tam bir banka hesabƒ± için uygun olmadƒ±klarƒ± için bir çocuƒüun hesabƒ±nda saklanacaktƒ±r.

Bir alt sƒ±nƒ±f olu≈üturmak için a≈üaƒüƒ±daki kodu kullanabiliriz:< /p>

ChildBankHesabƒ± sƒ±nƒ±fƒ±, BankAccount sƒ±nƒ±fƒ±nƒ±n alt √∂ƒüesi olur, çunku BankAccount parantez içine alƒ±nƒ±r. Alt sƒ±nƒ±fƒ±mƒ±zƒ±n ust sƒ±nƒ±fƒ±mƒ±zla tam olarak aynƒ± deƒüerlere sahip olmasƒ±nƒ± istiyorsak‚ÄîBankAccount‚Äîpass anahtar kelimesini ≈üu ≈üekilde kullanabiliriz:

Ancak daha √∂nce tartƒ±≈ütƒ±ƒüƒ±mƒ±z gibi, alt hesabƒ±mƒ±zƒ±n √∂zel bir deƒüer depolamak için: kullanƒ±cƒ±nƒ±n hesabƒ±nƒ±n kƒ±sƒ±tlandƒ±ƒüƒ±nƒ± s√∂yleyen bir deƒüi≈üken.

Bu hedefi gerçekle≈ütirmek için restricted adlƒ± yeni bir deƒüer ekleyeceƒüiz. çocuk sƒ±nƒ±fƒ±. Bunu a≈üaƒüƒ±daki kodu kullanarak yapabiliriz:

≈ûimdi kodumuzu parçalayalƒ±m.

Yukarıdaki kodda ChildBankHesaplarımızın dört değer tutmasını istediğimizi belirtiyoruz: ad, soyad, dengeli ve kısıtlı.

"Python.Engineering hayatƒ±ma en çok ihtiyacƒ±m olduƒüu anda girdi ve hƒ±zlƒ± bir ≈üekilde bir eƒüitim kampƒ±yla e≈üle≈ümeme yardƒ±mcƒ± oldu. Mezun olduktan iki ay sonra, hayalimdeki i≈üi, deƒüerlerim ve hedeflerim ile uyumlu buldum. life!"

Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

ƒ∞lk uç‚Äîadƒ±, soyadƒ± ve bakiye‚Äîbizimle aynƒ± ust sƒ±nƒ±f deƒüerleri ancak kƒ±sƒ±tlƒ± yenidir ve çocuk sƒ±nƒ±fƒ±mƒ±za √∂zeldir. Varsayƒ±lan olarak, kƒ±sƒ±tlƒ±, True olarak ayarlanmƒ±≈ütƒ±r.

√ñyleyse standart bir BankHesabƒ± olu≈üturursak (bir deƒüil ChildBankAccount), kƒ±sƒ±tlƒ± deƒüerine eri≈üemeyeceƒüiz. Benzer ≈üekilde, bir ChildBankAccount olu≈üturmadƒ±kça isRestricted y√∂ntemine eri≈üemeyeceƒüiz.

ƒ∞≈üte bir < olu≈üturma √∂rneƒüi. code>ChildBankAccount ve sƒ±nƒ±fƒ±mƒ±z hakkƒ±nda daha fazla bilgi edinmek için getBalance() ve isResticted() y√∂ntemlerini kullanmak:

Kodumuz aşağıdakileri döndurur:

G√∂rduƒüunuz gibi programƒ±mƒ±z √∂nce hesabƒ± olan Bill Appleseed için yeni bir ChildBankAccount tanƒ±mlar. 100 dolar tutar. Ardƒ±ndan programƒ±mƒ±z, sƒ±nƒ±fƒ±mƒ±zda kullanƒ±cƒ±nƒ±n bakiyesini d√∂nduren getBalance() y√∂ntemini çalƒ±≈ütƒ±rƒ±r. getBalance(), ust sƒ±nƒ±fƒ±mƒ±z BankAccount’ta bildirildi, ancak devralma yoluyla ChildBankAccount tarafƒ±ndan eri≈üilebilir.

Programƒ±mƒ±z, çocuƒüun hesabƒ±nƒ±n 18 ya≈üƒ±ndan kuçuk olduƒüu için kƒ±sƒ±tlandƒ±ƒüƒ±nƒ± belirten isRestricted() y√∂ntemini de yurutur. Bu sƒ±nƒ±f ChildBankAccount’ta bildirilir. , ancak bu, BankAccount ust sƒ±nƒ±fƒ±mƒ±z tarafƒ±ndan eri≈üilebilir olmadƒ±ƒüƒ± anlamƒ±na gelir. Kƒ±sƒ±tlƒ± bir BankAccount olu≈üturmak istiyorsak, ust sƒ±nƒ±fƒ± deƒüi≈ütirmemiz gerekir.

Üst Yöntemleri Yeniden Tanımlama

Yukarƒ±daki √∂rneƒüimizde, bir banka hesaplarƒ± için bilgileri depolayan BankAccount adlƒ± ust sƒ±nƒ±f. Ayrƒ±ca, 18 ya≈üƒ±n altƒ±ndaki hesap sahipleri için bilgileri depolayan ChildBankAccount adƒ±nda bir alt sƒ±nƒ±f olu≈üturduk. Bu sƒ±nƒ±f, BankAccount sƒ±nƒ±fƒ±ndan y√∂ntemleri devraldƒ± ve ayrƒ±ca ’u yarattƒ±. isRestricted() y√∂ntemi.

Peki ya mevcut bir ust sƒ±nƒ±f y√∂ntemini deƒüi≈ütirmek istersek? Diyelim ki BankAccount bakiyemizin bakiyelerini içeren bir mesaj ve Bir kredili mevduat hesabƒ± için uygunsunuz ≈üeklinde bir mesaj d√∂ndurmesini istiyoruz, ancak bunun ChildBankAccount sahipleri.

Bunu yapmak için ust y√∂ntemimizi geçersiz kƒ±lmamƒ±z gerekiyor.

İşte revize edilmiş ust yöntemimiz BankAccount< kodu /code>, artık hesap sahiplerine bakiyelerini kontrol ettiklerinde kredili mevduat hesabı almaya uygun olduklarını söyleyen bir mesaj yazdırıyor:

≈ûimdi, John Appleseed için yeni bir BankAccount olu≈üturursak ve bakiyesini yazdƒ±rdƒ±ƒüƒ±nƒ±zda, Avantaj için uygunsunuz yazan bir mesaj g√∂receƒüiz. ƒ∞≈üte yeni bir hesap ilan edip bakiyesini kontrol etmemize bir √∂rnek:

Kodumuz şunu döndurur:

Ancak bu deƒüi≈üiklik aynƒ± zamanda ChildBankHesabƒ±mƒ±z anlamƒ±na da geliyor. deƒüerlerini BankAccount’tan devralƒ±rsa, mesajƒ± da g√∂rur. ƒ∞≈üte, BankAccount ust sƒ±nƒ±fƒ±mƒ±z deƒüi≈ütiƒüine g√∂re bir ChildBankAccount olu≈üturmamƒ±za ve bakiyesini kontrol etmemize bir √∂rnek:

Kodumuz getiriler:

< p>Genellikle çocuklara kredili mevduat hesabƒ± verilmediƒüinden, kodumuzda bir deƒüi≈üiklik yapmamƒ±z gerekecek. ≈ûimdi, bunu yapabilmek için, ChildBankAccount sƒ±nƒ±fƒ±mƒ±zƒ± deƒüi≈ütirmeli ve yeni bir getBalance() i≈ülevi bildirmeliyiz.

ChildBankHesabƒ± için yukarƒ±daki kod:

Yeni bir fonksiyon eklemek için bu kodu deƒüi≈ütirmemiz gerekiyor: getBalance(). Bu i≈ülev, ust sƒ±nƒ±fƒ±mƒ±zda bildirdiƒüimizle aynƒ± ≈üekilde çalƒ±≈üacak, ancak kredili mevduat hesaplarƒ±yla ilgili mesajƒ± içermeyecek. Yeni i≈ülevimizi bildirmek için ekleyeceƒüimiz kod:

√áocuƒüumuzun bakiyesini ≈üimdi almaya çalƒ±≈üalƒ±m:

Kodumuz şunu döndurur:

In yukarƒ±daki √∂rnekte, ChildBankAccount alt sƒ±nƒ±fƒ±ndaki getBalance() y√∂nteminin uzerine yazdƒ±k. ChildBankAccount için yeni getBalance() y√∂ntemimiz yalnƒ±zca kullanƒ±cƒ±nƒ±n bakiyesini g√∂sterir. Ancak BankAccount sƒ±nƒ±fƒ±mƒ±zda, getBalance() y√∂ntemi hem kullanƒ±cƒ±nƒ±n bakiyesini hem de Bir kredili mevduat hesabƒ± için uygunsunuz mesajƒ±nƒ± g√∂sterir.< /p>

√úst y√∂ntemleri geçersiz kƒ±lmak, ustlerine benzer y√∂ntemler kullanabilen, ancak kendi √∂zel deƒüi≈üikliklerinin yapƒ±lmasƒ±nƒ± gerektiren birden fazla alt y√∂nteminiz olduƒüunda yararlƒ± olabilir. Yukarƒ±daki durumda olduƒüu gibi, ana banka hesaplarƒ±mƒ±zƒ±n bir kredili mevduat mesajƒ± g√∂rmesini istiyoruz, ancak alt banka hesaplarƒ±mƒ±zƒ± deƒüil, bu nedenle ChildBankAccount’daki ana y√∂ntemimizi geçersiz kƒ±ldƒ±k.

Sonuç

Kalƒ±tƒ±m, bir ust sƒ±nƒ±fta √∂nceden bildirilmi≈ü deƒüerleri depolayabilen alt sƒ±nƒ±flar olu≈üturmanƒ±za yardƒ±mcƒ± olmak için nesne y√∂nelimli programlamada kullanƒ±lƒ±r. Bu, benzer deƒüerleri depolayacak benzer sƒ±nƒ±flar olu≈ütururken kullanƒ±≈ülƒ±dƒ±r çunku bu sƒ±nƒ±flarƒ± olu≈üturmak için kodunuzu defalarca tekrarlamadan kalƒ±tƒ±mƒ± kullanabilirsiniz.

Bu √∂ƒüreticide, Python’da kalƒ±tƒ±mƒ±n rolunu ara≈ütƒ±rdƒ±k. . Ayrƒ±ca kalƒ±tƒ±mƒ±n ve ebeveyn ve alt sƒ±nƒ±flarƒ±n nasƒ±l çalƒ±≈ütƒ±ƒüƒ±nƒ± tartƒ±≈ütƒ±k, ardƒ±ndan ebeveyn y√∂ntemlerinin nasƒ±l geçersiz kƒ±lƒ±nacaƒüƒ±nƒ± ara≈ütƒ±rdƒ±k. Artƒ±k bir Python uzmanƒ± gibi sƒ±nƒ±flar ve kalƒ±tƒ±mla çalƒ±≈ümaya hazƒ±rsƒ±nƒ±z!