Python süper

Python işlevleri ve meth

Python super() yöntemi, bir alt sınıftan bir üst sınıftan yöntemlere erişmenizi sağlar. Bu, kodunuzdaki tekrarı azaltmaya yardımcı olur. super() herhangi bir argüman kabul etmez.

Python gibi nesne yönelimli programlama dillerinin temel özelliklerinden biri kalıtımdır. Kalıtım, yeni bir sınıfın yeni sınıfı oluşturmak için başka bir sınıftan kod kullanmasıdır.

Sınıfları devralırken, bir üst sınıftan yöntemlere erişim elde etmek isteyebilirsiniz. İşte burada super() işlevi devreye girer.

Bu eğitimde Python'da kalıtımın temelleri örneklerle tartışılacaktır. Ardından, değerleri ve yöntemleri bir üst sınıftan devralmak için super() işlevinin nasıl kullanılacağı hakkında konuşacağız.




Python Super nedir?

Python super() yöntemi, bir üst sınıftaki yöntemlere erişmenizi sağlar. super()'i, başka bir sınıfın miras alındığı sınıftaki yöntemleri görüntülemenin bir yolu olarak düşünebilirsiniz.

super() yönteminin sözdizimi:

class Food(): def __init__(self, name): self.name = name class Cheese(Yiyecek): def __init__( self, brand): super().__init__() self.brand = brand

super() yöntemi herhangi bir argüman kabul etmez. super() yönteminden sonra devralmak istediğiniz yöntemi belirtirsiniz. Yukarıdaki Cheese Python sınıfı, Food class __init__() yönteminden değerleri devralır. Food sınıfından değerleri devralmak için super() sınıf yöntemini çağırırız.

Python mirası, yeni bir sınıfın kullandığı bir süreci ifade eder. yeni sınıfın yapısını tanımlamak için mevcut bir sınıftan kod.

Katılımcıların %81'i, bir eğitim kampına katıldıktan sonra teknik iş olanakları konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampına katılın.

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ı.

Miras hakkında düşünmenin bir yolu çocukların özellikleri ebeveynlerinden nasıl miras aldıklarını düşünmektir. Bir çocuk ebeveynleri ile aynı saç rengine sahip olabilir ve soyadını ebeveynlerinden alabilir.

Python'da iki tür sınıf vardır:

  • Çocuk sınıfları (veya “alt sınıflar”) yöntemleri ve değişkenleri devralır. Alt sınıflara bazen kardeş sınıflar denir.
  • Üst sınıflar (veya “temel sınıflar”), değerleri devralınabilen sınıflardır.




super() Python: __init__()'den devralın

Bir bankada hesabı olan kişilerin kimlik bilgilerini izleyen bir banka hesabı sistemi oluşturduğumuzu varsayalım. , kontrol hesapları için veri depolayan bir sınıf oluşturmak istiyoruz. Bunu şu kodu kullanarak yapabiliriz:

 class CheckingAccount: def __init__(self, name, Balance): self.name = name self.balance = bakiye def checkBalance(self): print("Balance:", self.balance)

Bu kod, bir çek hesabının taslağını oluşturur.

Şimdi, alt banka hesaplarının planını saklayan ve ChildAccount olarak adlandıracağımız bir sınıf oluşturmak istediğimizi varsayalım. class daha önce tanımladığımız CheckingAccount sınıfına dayalı olmalıdır.Bunu yapmak için super() fonksiyonunu kullanabiliriz. 

super(), bir alt sınıf içindeki bir üst sınıfın yöntemlerine erişmenizi sağlar.

Örneğimizde, üst sınıfımızın adı CheckingAccount ve alt sınıfımızın adı ChildAccountCheckingAccount, bir banka hesabının planını oluşturur ve ChildAccount, kendi sınıfını oluşturmak için CheckingAccount'tan değerleri devralır.

Şimdi , ChildAccount sınıfının CheckingAccount içinde depolanan değerleri devralmasını istediğimizi varsayalım. Ancak bu hesabın, varsayılan olarak True değerine eşit olması gereken is_child adında yeni bir değer depolamasını da istiyoruz.

Yeni ChildAccount bu kodu kullanan sınıf:

class ChildAccount(CheckingAccount): def __init__(self, name, Balance, is_child =True): self.is_child = is_child super().__init__(ad, bakiye)

Bu kod, yeni ChildAccount sınıfımız için bir plan oluşturur. CheckingAccount sınıfından ad ve bakiye değerlerini devralmak için super() yöntemini kullanırız. Sınıfımızın ilk satırında parantez içinde ana sınıf olarak CheckingAccount'u belirtiyoruz.

Bu, super() öğesinin tüm öğeleri devralmanıza izin verdiğini gösterir. başka bir sınıftan değerler. Ancak kodumuzda, is_child adında yeni bir değer de bildirdik. Bu değere yalnızca herhangi bir ChildAccount tarafından erişilebilir, çünkü onu ChildAccount sınıfında ilan ettik.


Bir alt hesap sahibi için sınıfımızın bir örneğini oluşturmak için şu kodu kullanabiliriz:

lynn = ChildAccount("Lynn", 200) print(lynn.name) print(lynn.balance) print(lynn.is_child) 

Bizim kod döndürür:

Lynn 200 True

Bir örnek ilan ettik Python değişkenine lynn atanan ChildAccount sınıfının. lynn bir sınıf nesnesi çünkü bir nesne kullanarak lynn'in değerini bildirdik.

Lynn’s hesabında 200$ var ve is_child değeri True Ardından, Lynn’s acc ile ilişkili name, balance, is_child değerlerini yazdırdık. oun. Bu değerleri Python print() yöntemini kullanarak konsola yazdırıyoruz.

Çünkü miras aldık name ve balance, CheckingAccount sınıfından, bunları kodumuzda kullanabildik. Ancak Lynn’s hesabında ayrıca is_child için ayarlanmış bir değer vardır ve bu değer, ChildAccount'un tüm örnekleri için varsayılan olarak True olarak ayarlanır.




super () Python: Yöntemleri Devralma

super(), sınıfları tek düzeyli devralma kullanarak—bir üst sınıftan bir sınıf devralarak devralmanıza olanak tanır. Ya da çok düzeyli kalıtımla super() kullanabilirsiniz. Bu örnekte, super() ile tek seviyeli kalıtım üzerine odaklanacağız.

Önceki örneğimizde, super() için kullandık. CheckingAccount sınıfında depolanan değerleri devralır ve bunları ChildAccount sınıfında erişilebilir kılar. Ama ya bir yöntemi devralmak ve yanıtını değiştirmek istiyorsak?

"Python.Engineering hayatıma en çok ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra hayalimi buldum. hayattaki değerlerim ve hedeflerim ile uyumlu bir iş!"

Venus, Rockbot'ta Yazılım Mühendisi

Hadi bizim konumuza geri dönelim Daha önceki CheckingAccount sınıfı:

class CheckingAccount: def __init__(self, name, bakiye): self.name = name self.balance = Balance def checkBalance(self): print("Balance:", self.balance)

Bu sınıfta, sınıfın saklaması gereken değerler için planı tanımladık &mdash ; ad ve denge. Kullanıcının bakiyesini kontrol etmesine izin veren checkBalance() adında bir yöntem tanımladık.


Şimdi, checkBalance()'i ChildAccount için erişilebilir kılmak istediğimizi varsayalım. “Bir alt hesap sahibisiniz!” Bu, kullanıcının bakiyesi konsola yazdırılmadan önce görünmelidir.

Devralınan yöntemlerimize şu şekilde erişebiliriz:< /p>

class ChildAccount(CheckingHesap): def __init__(self, name, Balance, is_child=True): self.is_child = is_child super().__init__(ad, bakiye) def checkBalance(self): print("Siz bir alt hesap sahibisiniz!") super().checkBalance() 

ChildAccount sınıfında checkBalance() yönteminin yeni bir sürümünü ilan etti. Bu sürüm ilk olarak “Bir alt hesap sahibisiniz!” konsola. sınıftan checkBalance() yöntemini yürütmek için super() kodunu kullanır’ ebeveyn.

Bu durumda, super().checkBalance() çalıştığında, CheckingAccountcheckBalance() işlevi em> sınıfı yürütülür. Bu, kullanıcının bakiyesini konsola yazdırır.

Şimdi, Lynn'in hesabı için checkBalance() yöntemimize erişmeye çalışalım:

lynn = ChildAccount("Lynn", 200) lynn.checkBalance() 

Bizim kod iadeleri:

Bir çocuk hesap sahibisiniz! Bakiye: 250

lynn.checkBalance() yöntemini çağırdığımızda, ChildAccount.checkBalance() yöntemimizdeki kod şudur: çalıştırın ve ardından süper nesne, CheckingAccount.checkBalance() yöntemindeki kodu yürütür.

super() işlevi, parent öğesini kullanmamıza izin verir. yöntemleri, yine de alt sınıflarımızda bu yöntemlerin üzerine yazabiliyorken.




Sonuç

Python super() işlevi, yöntemleri bir üst öğeden devralmanıza olanak tanır. sınıf. super() işlevi, mevcut işlevlerden kodu yeniden kullanabileceğiniz için daha okunabilir kod yazmanıza yardımcı olur.

Bu eğitici, örneklerle birlikte, super() işlevinin nasıl kullanılacağını tartışır. bir üst sınıftan değerleri ve yöntemleri devralır. Artık bir Python uzmanı gibi super() işlevini kullanmaya başlamak için ihtiyacınız olan bilgilerle donatıldınız!

Python programlama hakkında daha fazla kaynak için Python Nasıl Öğrenilir kılavuzu.





Python süper: StackOverflow Questions