Menu
Coddy logo textTech

Ö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)   # B

Sı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 Academy

Nesne 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 yok

Temel 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.

challenge icon

Görev

Kolay

Bir 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 metotlarla BankAccount sınıfını tanımlayın
  • driver.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)    # Bob

Sı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 School

Sı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 Academy

Nesne oluşturulduktan sonra örnek değişkenleri oluşturma:

alice.age = 16  # Bu bir örnek değişkeni oluşturur
print(alice.age)  # 16

Kendin 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ın
quiz iconKendini test et

Bu 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