Python'da Nesne Yönelimli Programlamanın (OOP) temellerini adım adım öğrenmek için hazırlanmış bir çalışma reposudur. Temel sınıf tanımlarından encapsulation, abstraction, inheritance ve polymorphism gibi ileri düzey prensiplere kadar tüm konuları kapsar.
Object-Oriented-Programming-Python/
│
├── classes/
│ └── classes.py # Temel sınıf ve metot tanımları
│
├── constructors/
│ └── constructors.py # __init__, assert, __repr__, sınıf attribute'ları
│
├── classic vs static methods/
│ ├── classic_vs_static.py # @classmethod ve @staticmethod kullanımı
│ └── items.csv
│
├── getter and setter/
│ ├── getters_and_setters.py # @property ve @setter dekoratörleri
│ └── items.csv
│
├── inheritance/
│ ├── inheritance.py # Kalıtım ve super() kullanımı
│ └── items.csv
│
└── OOP Principles/
├── oop.py # 4 temel OOP prensibi bir arada
└── items.csv
- Sınıf tanımlama ve nesne oluşturma
- Instance metotları ve
selfanahtar kelimesi - Nesnelere dinamik olarak attribute atama
__init__constructor metodu- Sınıf düzeyinde ve nesne düzeyinde attribute farkları
assertile girdi doğrulama__repr__magic metodu ile okunabilir çıktı- Tüm nesneleri takip etmek için sınıf düzeyinde
alllistesi
@classmethod— CSV dosyasından nesne oluşturma (instantiate_from_csv)@staticmethod— Sınıfla ilişkili ama nesneye bağlı olmayan yardımcı metot (is_integer)- Python
csv.DictReaderile yapılandırılmış veri okuma
@propertydekoratörü ile salt okunur (read-only) attribute tanımlama@<attribute>.setterile kontrollü değiştirme- Çift alt çizgi (
__name) ile name mangling ve kapsülleme
- Bir üst sınıfı (
Item) genişleten alt sınıf (Phone) oluşturma super().__init__()ile üst sınıf constructor'ını çağırma- Alt sınıfa özel attribute ekleme (
broken_phones) - Üst sınıf metotlarını alt sınıf nesnelerinde kullanma
Nesne Yönelimli Programlamanın dört temel ilkesini tek dosyada birleştiren kapsamlı bir modül:
| Prensip | Açıklama |
|---|---|
| Encapsulation (Kapsülleme) | @property ve name mangling ile attribute'lara doğrudan erişimi kısıtlama |
| Abstraction (Soyutlama) | Karmaşık iç mantığı (__connect, __prepare_body, __send) basit bir send_email() arayüzünün arkasına gizleme |
| Inheritance (Kalıtım) | Phone sınıfının Item sınıfından miras alması |
| Polymorphism (Çok Biçimlilik) | Aynı metotların (apply_discount, increment_price) farklı nesne türlerinde çalışması |
- Python 3.6+
Her modül bağımsız olarak çalıştırılabilir:
# Temel sınıflar
python classes/classes.py
# Constructor'lar
python constructors/constructors.py
# Class ve static metotlar
cd "classic vs static methods"
python classic_vs_static.py
# Getter ve setter
cd "getter and setter"
python getters_and_setters.py
# Kalıtım
cd inheritance
python inheritance.py
# Tüm OOP prensipleri
cd "OOP Principles"
python oop.pyitems.csvdosyası birden fazla modülde kullanılarak yapılandırılmış veriden nesne oluşturma işlemi gösterilmektedir.- Her modül bir öncekinin üzerine inşa edildiğinden, yukarıdaki sırayı takip etmeniz önerilir.