Class Pada Python – Class Invariants

Masih membahas Class Pada Python, pada initializer umum dilakukan class invariants. Class invariants adalah bertujuan memastikan objek yang dicreate bebas dari error.

class Flight:

    def __init__(self, number):
        if not number[:2].isalpha():
            raise ValueError("Airline code tidak ada '{}'".format(number))
        if not number[:2].isupper():
            raise ValueError("Airline code tidak valid '{}'".fomat(number))
        if not (number[:2].isdigit() and int(number[2:0])<=9999):
            raise ValueError("Invalid route number '{}'".format(number))

        self._number = number

    def number(self):
        return self._number

    def airline(self):
        return self._number[:2]

Pada contoh diatas, dilakukan validasi nomer penerbangan dengan cara string slicing (lihat lesson tentang string slicing). Berikut penjelasan validasi class diatas (ini hanya contoh, bukan hal yang mutlak harus melakukan validasi seperti ini)

  • Validasi pertama, check apakah ada kode airline
  • Validasi kedua, check apakah kode airline huruf besar
  • Validasi ketiga, check apakah 2 character awal adalah text/string dan 3 char sisanya adalah angka positif.

Testing pada REPL akan menunjukan, jika memasukan kode penerbangan yang salah, maka akan mengembalikan error.

>>> from airTravel import Flight
>>> f = Flight("060")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  .....
  .....
ValueError: Airline code tidak ada '060' 

>>> f = Flight("GA123")
>>> f.airline()
'GA'

Setelah validasi dilakukan dan yakin bahwa nomer penerbangan yang diinput benar, kita dapat menambahkan method untuk query dengan mudah (karena sudah bebas error). Pada contoh diatas ditambahkan method airline() untuk mengambil kode airline.

Sharing is caring: