Anatomi kelas: konstruktor __init__

Pemrograman Berorientasi Objek di Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Metode dan atribut

  • Metode adalah definisi fungsi dalam kelas
  • self sebagai argumen pertama
  • Definisikan atribut dengan penugasan
  • Rujuk atribut dalam kelas melalui self.___

   

class MyClass:
    # definisi fungsi dalam kelas
    # argumen pertama adalah self
    def my_method1(self, other_args...):
        # lakukan sesuatu di sini

    def my_method2(self, my_attr):        
        # atribut dibuat dengan penugasan
        self.my_attr = my_attr
        ...
Pemrograman Berorientasi Objek di Python

Konstruktor

  • Tambahkan data ke objek saat membuatnya?
  • Konstruktor metode __init__() dipanggil setiap kali objek dibuat.
class Customer:
       def __init__(self, name):     
        self.name = name           # <--- Buat atribut .name dan atur ke parameter name
        print("Metode __init__ dipanggil")

cust = Customer("Lara de Silva") #<--- __init__ dipanggil secara implisit print(cust.name)
Metode __init__ dipanggil
Lara de Silva
Pemrograman Berorientasi Objek di Python
class Customer:
       def __init__(self, name, balance):  # <-- parameter balance ditambahkan

self.name = name self.balance = balance # <-- atribut balance ditambahkan print("Metode __init__ dipanggil")
cust = Customer("Lara de Silva", 1000) # <-- __init__ dipanggil print(cust.name) print(cust.balance)
Metode __init__ dipanggil
Lara de Silva
1000
Pemrograman Berorientasi Objek di Python
class Customer:
       def __init__(self, name, balance=0):  #<--atur nilai default untuk balance

self.name = name self.balance = balance print("Metode __init__ dipanggil")
cust = Customer("Lara de Silva") # <-- tidak perlu menyebutkan balance secara eksplisit
print(cust.name) print(cust.balance) # <-- atribut tetap dibuat
Metode __init__ dipanggil
Lara de Silva
0
Pemrograman Berorientasi Objek di Python

Atribut dalam metode

class MyClass:
    def my_method1(self, attr1):
        self.attr1 = attr1
        ...

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 dibuat
obj.my_method2(val2) # <-- attr2 dibuat

Atribut dalam konstruktor

class MyClass:
    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2
        ...

# Semua atribut dibuat obj = MyClass(val1, val2)
  • lebih mudah mengetahui semua atribut
  • atribut dibuat saat objek dibuat
  • kode lebih dapat digunakan dan dipelihara
Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut dalam __init__()
Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut dalam __init__()
2. Penamaan

CamelCase untuk kelas, lower_snake_case untuk fungsi dan atribut

Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut dalam __init__()
2. Penamaan

CamelCase untuk kelas, lower_snake_case untuk fungsi dan atribut

3. Pertahankan self sebagai self
class MyClass:
    # Ini berfungsi tetapi tidak direkomendasikan
    def my_method(kitty, attr):
       kitty.attr = attr
Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut dalam __init__()
2. Penamaan

CamelCase untuk kelas, lower_snake_case untuk fungsi dan atribut

3. self adalah self
4. Gunakan docstring
class MyClass:
    """Kelas ini tidak melakukan apa-apa"""
    pass
Pemrograman Berorientasi Objek di Python

Mari berlatih!

Pemrograman Berorientasi Objek di Python

Preparing Video For Download...