Perbandingan pewarisan dan representasi string

Pengantar Pemrograman Berorientasi Objek di Python

George Boorman

Curriculum Manager, DataCamp

Membandingkan objek dari kelas berbeda

class Customer:
    def __init__(self, acc_id, name):
        self.acc_id, self.name = acc_id, name

    def __eq__(self, other):
        # Mengembalikan True jika objek punya atribut yang sama
        # dan tipe yang sama
        return (self.acc_id == other.acc_id) and (self.name == other.name)\
            and (type(self) == type(other))
Pengantar Pemrograman Berorientasi Objek di Python

Membandingkan objek dengan pewarisan

 

 

 

                               

    Bagaimana jika satu objek mewarisi kelas dari objek lain?

Pengantar Pemrograman Berorientasi Objek di Python

Rekening giro dan tabungan

SavingsAccount mewarisi BankAccount

Pengantar Pemrograman Berorientasi Objek di Python

__eq__ di kelas induk/anak

class BankAccount:
    def __init__(self, number, balance=0):
        self.balance = balance
        self.number = number

    def withdraw(self, amount):
        self.balance -= amount 

    # Definisikan __eq__ yang mengembalikan True 
    # jika atribut number sama 
    def __eq__(self, other):
        print("BankAccount __eq__() called")
        return self.number == other.number 
class SavingsAccount(BankAccount):
    def __init__(self, number, balance, interest_rate):
        BankAccount.__init__(self, number,
                             balance)
          self.interest_rate = interest_rate

    # Definisikan __eq__ yang mengembalikan True 
    # jika atribut number sama 
    def __eq__(self, other):
        print("SavingsAccount __eq__() called")
        return self.number == other.number 
Pengantar Pemrograman Berorientasi Objek di Python

Membandingkan objek induk dan anak

ba = BankAccount(123, 10000)
sa = SavingsAccount(456, 2000, 0.05)
# Bandingkan kedua objek
ba == sa
SavingsAccount __eq__() called
False
sa == ba
SavingsAccount __eq__() called
False
Pengantar Pemrograman Berorientasi Objek di Python

Mencetak objek

class Customer:
    def __init__(self, name, balance):
        self.name, self.balance = name, balance 

cust = Customer("Maryam Azar", 3000)
print(cust)
<__main__.Customer at 0x1f8598e2240>




a_list = [1,2,3]
print(a_list)
[1, 2, 3]
Pengantar Pemrograman Berorientasi Objek di Python

__str__()

  • print(obj), str(obj)
print(np.array([1,2,3]))
[1 2 3]
str(np.array([1,2,3]))
'[1 2 3]'
  • informal, untuk pengguna akhir
  • representasi dalam bentuk string

__repr__()

  • repr(obj), saat mencetak di konsol
repr(np.array([1,2,3]))
'array([1,2,3])'
np.array([1,2,3])
array([1, 2, 3])
  • formal, untuk pengembang
  • representasi yang dapat reproduksi
  • cadangan untuk print()
Pengantar Pemrograman Berorientasi Objek di Python

Implementasi: repr

class Customer:
    def __init__(self, name, balance):
        self.name = name
        self.balance = balance 

    def __repr__(self):

# Perhatikan tanda '...' di sekitar name return f"Customer('{self.name}', {self.balance})"
cust = Customer("Maryam Azar", 3000) # Akan memanggil __repr__() secara implisit cust
Customer('Maryam Azar', 3000)
Pengantar Pemrograman Berorientasi Objek di Python

Implementasi: str

class Customer:
    def __init__(self, name, balance):
        self.name = name
        self.balance = balance
    def __str__(self):
        cust_str = f"""
        Customer:
            name: {self.name}
            balance: {self.balance}
            """
        return cust_str
cust = Customer("Maryam Azar", 3000)

# Akan memanggil __str__() secara implisit
print(cust)
Customer:
  name: Maryam Azar
  balance: 3000
Pengantar Pemrograman Berorientasi Objek di Python

Ayo berlatih!

Pengantar Pemrograman Berorientasi Objek di Python

Preparing Video For Download...