Python mirası
ast Python module |
code Python module |
COM PHP module |
dis Python module |
Ev PHP module |
http Python module |
imp Python module |
io Python module |
keyword Python module |
nis Python module |
os Python module |
PS PHP module |
Python functions |
re Python module |
SPL PHP module |
StackOverflow |
struct Python module |
Sync PHP module |
time Python module
Michael Zippo
18.11.2021
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.
√ú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.
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!