MulaiMulai sekarang secara gratis

Konstruktor alternatif

Python juga memungkinkan Anda mendefinisikan metode kelas menggunakan dekorator @classmethod dan argumen pertama khusus cls. Penggunaan utama metode kelas adalah untuk mendefinisikan metode yang mengembalikan sebuah instance dari kelas, tetapi tidak menggunakan kode yang sama dengan __init__().

Sebagai contoh, Anda sedang mengembangkan paket deret waktu dan ingin mendefinisikan kelas Anda sendiri untuk bekerja dengan tanggal, BetterDate. Atribut kelas ini adalah year, month, dan day. Anda ingin memiliki konstruktor yang membuat objek BetterDate dari nilai tahun, bulan, dan hari, tetapi Anda juga ingin dapat membuat objek BetterDate dari string seperti 2020-04-30.

Anda mungkin menemukan fungsi-fungsi berikut berguna:

  • Metode .split("-") akan membagi string pada "-" menjadi sebuah array, misalnya "2020-04-30".split("-") mengembalikan ["2020", "04", "30"],
  • int() akan mengonversi string menjadi angka, misalnya int("2019") adalah 2019.

Latihan ini adalah bagian dari kursus

Pemrograman Berorientasi Objek di Python

Lihat Kursus

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
Edit dan Jalankan Kode