Anatomi kelas: konstruktor __init__

Pengantar Pemrograman Berorientasi Objek di Python

George Boorman

Curriculum Manager, DataCamp

Method dan atribut

  • Method adalah definisi fungsi di dalam kelas
  • self sebagai argumen pertama
  • Definisikan atribut dengan penugasan
  • Rujuk atribut di dalam kelas via self.___
  • Memanggil banyak method bisa tidak berkelanjutan!
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 ...
Pengantar Pemrograman Berorientasi Objek di Python

Konstruktor

  • Tambahkan data ke objek saat membuatnya
  • Method constructor __init__() dipanggil setiap kali objek dibuat
    • Dipanggil otomatis karena sintaks __methodname__
class Customer:
    def __init__(self, name):
        # Buat atribut .name dan set ke parameter name
        self.name = name
        print("The __init__ method was called")
Pengantar Pemrograman Berorientasi Objek di Python

Konstruktor

# __init__ dipanggil secara implisit 
cust = Customer("Lara de Silva")   
print(cust.name)
The __init__ method was called
Lara de Silva
Pengantar Pemrograman Berorientasi Objek di Python

Atribut di dalam method

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

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...

obj = MyClass() # attr1 dibuat obj.my_method1(val1) # attr2 dibuat obj.my_method2(val2)

Atribut di konstruktor

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

# Semua atribut dibuat obj = MyClass(val1, val2)
  • Umumnya kita sebaiknya gunakan konstruktor
  • Atribut dibuat saat objek dibuat
  • Kode lebih mudah digunakan dan dipelihara
Pengantar Pemrograman Berorientasi Objek di Python

Tambah argumen

class Customer:
    # Tambahkan argumen balance
    def __init__(self, name, balance): 

self.name = name # Tambahkan atribut balance self.balance = balance print("The __init__ method was called")
Pengantar Pemrograman Berorientasi Objek di Python

Tambah parameter

# __init__ dipanggil
cust = Customer("Lara de Silva", 1000)
print(cust.name)
print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Pengantar Pemrograman Berorientasi Objek di Python

Argumen default

class Customer:
    # Tetapkan nilai default untuk balance
    def __init__(self, name, balance=0):
        self.name = name
        # Tetapkan atribut baru
        self.balance = balance
        print("The __init__ method was called")
Pengantar Pemrograman Berorientasi Objek di Python

Argumen default

# Jangan tentukan balance secara eksplisit
cust = Customer("Lara de Silva")

print(cust.name) # Atribut balance tetap dibuat print(cust.balance)
The __init__ method was called
Lara de Silva
0
Pengantar Pemrograman Berorientasi Objek di Python

Praktik terbaik

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

Praktik terbaik

1. Inisialisasi atribut di __init__()
2. Penamaan

CamelCase untuk kelas, lower_snake_case untuk fungsi dan atribut

Pengantar Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut di __init__()
2. Penamaan

CamelCase untuk kelas, lower_snake_case untuk fungsi dan atribut

3. Biarkan self tetap self
class MyClass:
    # Ini berfungsi tapi tidak disarankan
    def my_method(george, attr):
        george.attr = attr
Pengantar Pemrograman Berorientasi Objek di Python

Praktik terbaik

1. Inisialisasi atribut di __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
Pengantar Pemrograman Berorientasi Objek di Python

Ayo berlatih!

Pengantar Pemrograman Berorientasi Objek di Python

Preparing Video For Download...