Örnek ve Sınıf Değişkenleri
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 13 / 64.
Örnek değişkenleri her nesneye özgüdür, sınıf değişkenleri ise aynı sınıfın tüm nesneleri tarafından paylaşılır.
İşte her iki değişken türüne de sahip bir sınıf örneği
class Student:
# Sınıf değişkeni - tüm örnekler tarafından paylaşılır
school = "Python High School"
def __init__(self, name, grade):
# Örnek değişkenleri - her öğrenciye özeldir
self.name = name
self.grade = gradeÖğrenci nesneleri oluşturun:
alice = Student("Alice", "A")
bob = Student("Bob", "B")Örnek değişkenlerine erişin (her nesneye özgü):
print(alice.name) # Alice
print(bob.name) # Bob
print(alice.grade) # A
print(bob.grade) # BSınıf değişkenlerine erişin (tüm nesneler tarafından paylaşılır):
print(alice.school) # Python High School
print(bob.school) # Python High School
print(Student.school) # Python High SchoolŞimdi sınıf değişkenini değiştirin:
Student.school = "Python Academy"Değişikliğin tüm örnekleri nasıl etkilediğini kontrol edin:
print(alice.school) # Python Academy
print(bob.school) # Python AcademyÇıktı:
Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python AcademyNesne oluşturulduktan sonra da örnek değişkenleri oluşturabilirsiniz:
alice.age = 16 # Bu bir örnek değişken oluşturur
print(alice.age) # 16
# print(bob.age) # Bu bir hataya neden olur - bob'un age özelliği yokTemel Fark: Örnek değişkenleri (self.variable_name ile oluşturulan) her nesneye özgüdür, sınıf değişkenleri ise (doğrudan sınıf içinde tanımlanan) tüm nesneler tarafından paylaşılır. Bir sınıf değişkenini değiştirmek tüm örnekleri etkiler.
Görev
KolayBir bankacılık sistemini tamamlayın.. Bir dosyada bir BankAccount sınıfı tanımlayacak ve onu başka bir dosyada kullanacaksınız.
Şunlarla çalışacaksınız:
bank_account.py: Öznitelikler ve metotlarlaBankAccountsınıfını tanımlayındriver.py: Sınıfı içe aktarın, hesaplar oluşturun ve sınıf değişkenlerini gösterin
Adım adım talimatlar için her iki dosyadaki TODO yorumlarını takip edin. Yorumlar, uygun değişkenler ve metotlarla sınıfı oluşturmanızda ve sınıf değişkenlerinin tüm örnekleri nasıl etkilediğini göstermenizde size rehberlik edecektir.
Kopya kağıdı
Örnek değişkenleri her nesneye özgüdür, sınıf değişkenleri ise aynı sınıfın tüm nesneleri tarafından paylaşılır.
Her iki değişken türüne de sahip sınıf:
class Student:
# Sınıf değişkeni - tüm örnekler tarafından paylaşılır
school = "Python High School"
def __init__(self, name, grade):
# Örnek değişkenleri - her öğrenciye özgü
self.name = name
self.grade = gradeÖrnek değişkenlerine erişim (her nesneye özgü):
alice = Student("Alice", "A")
bob = Student("Bob", "B")
print(alice.name) # Alice
print(bob.name) # BobSınıf değişkenlerine erişim (tüm nesneler tarafından paylaşılır):
print(alice.school) # Python High School
print(bob.school) # Python High School
print(Student.school) # Python High SchoolSınıf değişkenlerini değiştirmek tüm örnekleri etkiler:
Student.school = "Python Academy"
print(alice.school) # Python Academy
print(bob.school) # Python AcademyNesne oluşturulduktan sonra örnek değişkenleri oluşturma:
alice.age = 16 # Bu bir örnek değişkeni oluşturur
print(alice.age) # 16Kendin dene
# TODO: BankAccount sınıfını bank_account.py dosyasından içe aktarın
from bank_account import BankAccount
# TODO: Şu detaylarla iki hesap oluşturun:
# - account1: "Alice Smith" sahibi ve 1000$ bakiye
# - account2: "Bob Jones" sahibi ve 2000$ bakiye
# TODO: Her iki hesap için display_info() metodunu çağırın
# TODO: interest_rate sınıf değişkenini 0.03 (%3) olarak değiştirin
# Şu formatı kullanın: BankAccount.interest_rate = 0.03
# TODO: "After interest rate change:" metnini yazdırın
# TODO: Her iki hesabın da yeni faiz oranına sahip olduğunu göstermek için display_info() metodunu her iki hesap için tekrar çağırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Özellikleri
Örnek ve Sınıf DeğişkenleriProperty DekoratörleriGizli ÖzniteliklerÖzet - Banka Hesabı Yöneticisi