Kalıtım karşılaştırması ve metin temsili

Python'da Nesne Yönelimli Programlamaya Giriş

George Boorman

Curriculum Manager, DataCamp

Farklı sınıflardaki nesneleri karşılaştırma

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

    def __eq__(self, other):
        # Nesnelerin aynı özniteliklere ve
        # aynı türe sahip olması hâlinde True döndürür
        return (self.acc_id == other.acc_id) and (self.name == other.name)\
            and (type(self) == type(other))
Python'da Nesne Yönelimli Programlamaya Giriş

Kalıtım ile nesneleri karşılaştırma

 

 

 

                               

    Bir nesne diğerinin sınıfından kalıtım alırsa ne olur?

Python'da Nesne Yönelimli Programlamaya Giriş

Vadesiz ve vadeli hesaplar

BankAccount'tan kalıtım alan SavingsAccount

Python'da Nesne Yönelimli Programlamaya Giriş

Ebeveyn/çocuk sınıflarda __eq__

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

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

    # __eq__ tanımlayın: 
    # number öznitelikleri eşitse True döndürsün 
    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

    # __eq__ tanımlayın: 
    # number öznitelikleri eşitse True döndürsün 
    def __eq__(self, other):
        print("SavingsAccount __eq__() called")
        return self.number == other.number 
Python'da Nesne Yönelimli Programlamaya Giriş

Ebeveyn ve çocuk nesneleri karşılaştırma

ba = BankAccount(123, 10000)
sa = SavingsAccount(456, 2000, 0.05)
# İki nesneyi karşılaştırın
ba == sa
SavingsAccount __eq__() called
False
sa == ba
SavingsAccount __eq__() called
False
Python'da Nesne Yönelimli Programlamaya Giriş

Bir nesneyi yazdırma

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]
Python'da Nesne Yönelimli Programlamaya Giriş

__str__()

  • print(obj), str(obj)
print(np.array([1,2,3]))
[1 2 3]
str(np.array([1,2,3]))
'[1 2 3]'
  • gayriresmî, son kullanıcı için
  • dize temsili

__repr__()

  • repr(obj), konsolda yazdırma
repr(np.array([1,2,3]))
'array([1,2,3])'
np.array([1,2,3])
array([1, 2, 3])
  • resmî, geliştirici için
  • yeniden üretilebilir temsil
  • print() için geri dönüş
Python'da Nesne Yönelimli Programlamaya Giriş

Uygulama: repr

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

    def __repr__(self):

# add çevresindeki '...'a dikkat edin return f"Customer('{self.name}', {self.balance})"
cust = Customer("Maryam Azar", 3000) # Dolaylı olarak __repr__() çağrılır cust
Customer('Maryam Azar', 3000)
Python'da Nesne Yönelimli Programlamaya Giriş

Uygulama: 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)

# Dolaylı olarak __str__() çağrılır
print(cust)
Customer:
  name: Maryam Azar
  balance: 3000
Python'da Nesne Yönelimli Programlamaya Giriş

Hadi pratik yapalım!

Python'da Nesne Yönelimli Programlamaya Giriş

Preparing Video For Download...