Örnek ve sınıf verileri

Python'da Nesne Yönelimli Programlama

Alex Yarosh

Content Quality Analyst @ DataCamp

OOP'nin temel ilkeleri

 

Kalıtım:

  • Mevcut kodun işlevselliğini genişletme

Polimorfizm:

  • Birleşik bir arayüz oluşturma

Kapsülleme:

  • Veri ve yöntemlerin paketlenmesi
Python'da Nesne Yönelimli Programlama

Örnek düzeyinde veriler

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

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • name, salary örnek nitelikleridir
  • self bir örneğe bağlanır
Python'da Nesne Yönelimli Programlama

Sınıf düzeyinde veriler

  • Bir sınıfın tüm örnekleri arasında paylaşılan veriler
  • Sınıf niteliklerini class gövdesinde tanımlayın
class MyClass:
    # Bir sınıf niteliği tanımlayın
    CLASS_ATTR_NAME = attr_value


  • Sınıf içinde "küresel değişken"
Python'da Nesne Yönelimli Programlama

Sınıf düzeyinde veriler

class Employee:
  # Bir sınıf niteliği tanımlayın
  MIN_SALARY = 30000    #<--- self. yok

def __init__(self, name, salary): self.name = name # Sınıf niteliğine erişmek için sınıf adını kullanın if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
  • MIN_SALARY tüm örnekler arasında paylaşılır
  • Sınıf niteliğini tanımlamak için self kullanmayın
  • Sınıf niteliği değerine erişmek için ClassName.ATTR_NAME kullanın
Python'da Nesne Yönelimli Programlama

Sınıf düzeyinde veriler

class Employee:
  # Bir sınıf niteliği tanımlayın
  MIN_SALARY = 30000    

def __init__(self, name, salary): self.name = name # Sınıf niteliğine erişmek için sınıf adını kullanın if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("TBD", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("TBD", 60000)
print(emp2.MIN_SALARY)
30000
Python'da Nesne Yönelimli Programlama

Neden sınıf nitelikleri kullanılır?

Sınıfla ilgili küresel sabitler

 

  • nitelikler için minimum/maksimum değerler
  • yaygın kullanılan değerler ve sabitler, örn. pi bir Circle sınıfı için
  • ...
Python'da Nesne Yönelimli Programlama

Sınıf yöntemleri

  • Yöntemler zaten "paylaşılıyor": her örnek için aynı kod
  • Sınıf yöntemleri örnek düzeyinde verileri kullanamaz
class MyClass:

  @classmethod                         # <---sınıf yöntemi tanımlamak için dekoratör kullanın

def my_awesome_method(cls, args...): # <---cls argümanı sınıfı ifade eder # Burada işlemler yapın # Herhangi bir örnek niteliği kullanılamaz :(
MyClass.my_awesome_method(args...)
Python'da Nesne Yönelimli Programlama

Alternatif yapıcılar

class Employee:
  MIN_SALARY = 30000
  def __init__(self, name, salary=30000):
      self.name = name
      if salary >= Employee.MIN_SALARY:
        self.salary = salary
      else:
        self.salary = Employee.MIN_SALARY
  • Sadece bir __init__() olabilir

  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline()
      return cls(name)

  • Nesneler oluşturmak için sınıf yöntemlerini kullanın
  • Bir nesne döndürmek için return kullanın
  • cls(...) __init__(...) çağırır
Python'da Nesne Yönelimli Programlama

Alternatif yapıcılar

class Employee:
  MIN_SALARY = 30000
  def __init__(self, name, salary=30000):
      self.name = name
      if salary >= Employee.MIN_SALARY:
        self.salary = salary
      else:
        self.salary = Employee.MIN_SALARY

  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline()
      return cls(name)        

çalışanın adını içeren bir satırlık metin dosyası

# Employee() çağırmadan bir çalışan oluşturun
emp = Employee.from_file("employee_data.txt")
type(emp)
__main__.Employee
Python'da Nesne Yönelimli Programlama

Hadi pratik yapalım!

Python'da Nesne Yönelimli Programlama

Preparing Video For Download...