BaşlayınÜcretsiz Başlayın

Alternatif kurucular

Python, @classmethod dekoratörü ve özel bir ilk argüman olan cls ile sınıf metotları tanımlamana da izin verir. Sınıf metotlarının ana kullanım alanı, __init__() ile aynı kodu kullanmadan, sınıfın bir örneğini döndüren metotlar tanımlamaktır.

Örneğin, bir zaman serisi paketi geliştiriyorsun ve tarihlerle çalışmak için kendi sınıfını, BetterDate'i tanımlamak istiyorsun. Sınıfın öznitelikleri year, month ve day olacak. Yıla, aya ve güne ait değerler verildiğinde BetterDate nesneleri oluşturan bir kurucuya sahip olmak istiyorsun, ama aynı zamanda 2020-04-30 gibi dizelerden de BetterDate nesneleri oluşturabilmek istiyorsun.

Aşağıdaki işlevler işine yarayabilir:

  • .split("-") metodu, bir dizgeyi "-" karakterinden bölerek bir diziye ayırır; örneğin "2020-04-30".split("-") ifadesi ["2020", "04", "30"] döndürür,
  • int() bir dizgeyi sayıya dönüştürür; örneğin int("2019") değeri 2019'dur.

Bu egzersiz

Python'da Nesne Yönelimli Programlama

kursunun bir parçasıdır
Kursu Görüntüle

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

class BetterDate:    
    # Constructor
    def __init__(self, year, month, day):
      # Recall that Python allows multiple variable assignments in one line
      self.year, self.month, self.day = year, month, day
    
    # Define a class method from_str
    ____
    def from_str(____, datestr):
        # Split the string at "-" and convert each part to integer
        parts = datestr.split("-")
        year, month, day = int(parts[0]), ____, ____
        # Return the class instance
        ____ ____(____, ____, ____)
        
bd = BetterDate.from_str('2020-04-30')   
print(bd.year)
print(bd.month)
print(bd.day)
Kodu Düzenle ve Çalıştır