Python Operatörlerini Aşırı Yükleme

Python'da Orta Düzey Nesne Yönelimli Programlama

Jake Roach

Data Engineer

Karşılaştırma operatörlerini aşırı yükleme

class Person:
  def __init__(self, name):
      self.name = name

  def __eq__(self, other):
      return self.name == other.name

== işlevini özelleştirin

  • __eq__() sihirli yöntemini kullanın
  • self ve other alır
  • Boolean bir değer döndürür
bryce = Person("Bryce")
orion = Person("Orion")
print(bryce == orion)
False
chuck = Person("Charles Carmichael")
charles = Person("Charles Carmichael")
print(chuck == charles)
True
Python'da Orta Düzey Nesne Yönelimli Programlama

İki nesneyi toplama

class Team:
  def __init__(self, team_members):
      self.team_members = team_members

# İki Team nesnesi oluşturun, toplamayı deneyin
rookies = Team(["Casey", "Emmitt"])
veterans = Team(["Mike", "Chuck"])
dream_team = rookies + veterans
Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
TypeError: unsupported operand type(s) for +: 'Team' and 'Team'
Python'da Orta Düzey Nesne Yönelimli Programlama

+ operatörünü aşırı yükleme

class Team:
  def __init__(self, team_members):
    # team_members bir ad listesidir
    self.team_members = team_members

  def __add__(self, other):
    # Team nesnelerini toplamak daha büyük bir Team oluşturur
    return Team(self.team_members + other.team_members)
  • + operatörünü aşırı yüklemek için __add__() sihirli yöntemini kullanın
  • self ve other __add__() yöntemine gönderilir
  • "Toplanan" nesnelerin team_members listesini kullanarak yeni bir Team oluşturun
Python'da Orta Düzey Nesne Yönelimli Programlama

İki nesneyi toplama

# İki Team nesnesi oluşturun
rookies = Team(["Casey", "Emmitt"])
veterans = Team(["Mike", "Chuck"])

# Bu iki Team'i toplamayı deneyin
dream_team = rookies + veterans
print(type(dream_team))
print(dream_team.team_members)
Team
["Casey", "Emmitt", "Mike", "Chuck"]
Python'da Orta Düzey Nesne Yönelimli Programlama

+ ile yeni bir tür nesne oluşturma

class Team:
  def __init__(self, team_members):
      self.team_members = team_members

class Employee:
  def __init__(self, name, title):
    self.name = name
    self.title = title

  def __add__(self, other):
    # + operatörünü kullanarak
    # her Employee'nin adıyla bir Team oluşturun
    return Team([self.name, other.name])

Employee nesnelerini birleştirerek bir Team oluşturmak istersek ne olur?

  • __add__ Employee sınıfında uygulanır
  • Employee adlarından bir liste kurarak yeni bir Team üretir
  • İki Employee toplamının sonucu tek bir Team olur
Python'da Orta Düzey Nesne Yönelimli Programlama

Yeni bir nesne oluşturmak için iki nesneyi toplayın

# İki Employee nesnesi oluşturun
anna = Employee("Anna", "Technical Specialist")
jeff = Employee("Jeffrey", "Musician")

# Bunları toplayarak bir takım oluşturmayı deneyin
audio_team = anna + jeff
print(type(audio_team))
print(audio_team.team_members)
Team
["Anna", "Jeffrey"]
Python'da Orta Düzey Nesne Yönelimli Programlama

Diğer operatörleri aşırı yükleme

Operatör Sihirli Yöntem Operatör Türü
- __sub__ Aritmetik
!= __ne__ Karşılaştırma
< __lt__ Karşılaştırma
> __gt__ Karşılaştırma
+= __iadd__ Atama
and __and__ Mantıksal
in __contains__ Üyelik
is __is__ Kimlik

 

 

 

 

 

 

 

... Ve daha birçoğu!

Python'da Orta Düzey Nesne Yönelimli Programlama

Hadi pratik yapalım!

Python'da Orta Düzey Nesne Yönelimli Programlama

Preparing Video For Download...