Menu
Coddy logo textTech

Zmienne instancji a zmienne klasowe

Część sekcji Programowanie obiektowe ścieżki Python w Coddy. Lekcja 13 z 64.

Zmienne instancji są unikalne dla każdego obiektu, natomiast zmienne klasowe są współdzielone przez wszystkie obiekty tej samej klasy.

Oto przykład klasy z obydwoma rodzajami zmiennych

class Student:
    # Zmienna klasy - współdzielona przez wszystkie instancje
    school = "Python High School"
    
    def __init__(self, name, grade):
        # Zmienne instancji - unikalne dla każdego ucznia
        self.name = name
        self.grade = grade

Utwórz obiekty uczniów:

alice = Student("Alice", "A")
bob = Student("Bob", "B")

Uzyskaj dostęp do zmiennych instancji (unikalnych dla każdego obiektu):

print(alice.name)  # Alice
print(bob.name)    # Bob
print(alice.grade) # A
print(bob.grade)   # B

Dostęp do zmiennych klasy (współdzielonych przez wszystkie obiekty):

print(alice.school)     # Python High School
print(bob.school)       # Python High School
print(Student.school)   # Python High School

Teraz zmień zmienną klasy:

Student.school = "Python Academy"

Sprawdź, jak zmiana wpływa na wszystkie instancje:

print(alice.school)   # Python Academy
print(bob.school)     # Python Academy

Wynik:

Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academy

Możesz też utworzyć zmienne instancji po utworzeniu obiektu:

alice.age = 16  # To tworzy zmienną instancji
print(alice.age)  # 16
# print(bob.age)  # To spowodowałoby błąd — bob nie ma age

Kluczowa różnica: zmienne instancji (tworzone za pomocą self.variable_name) są unikalne dla każdego obiektu, natomiast zmienne klasowe (definiowane bezpośrednio w klasie) są współdzielone przez wszystkie obiekty. Zmiana zmiennej klasowej wpływa na wszystkie instancje.

challenge icon

Wyzwanie

Łatwy

Ukończ system bankowy.. Zdefiniujesz klasę BankAccount w jednym pliku i użyjesz jej w innym.

Będziesz pracować z:

  • bank_account.py: Zdefiniuj klasę BankAccount z atrybutami i metodami
  • driver.py: Zaimportuj klasę, utwórz konta i pokaż zmienne klasowe

Postępuj zgodnie z komentarzami TODO w obu plikach, aby wykonać instrukcje krok po kroku. Komentarze przeprowadzą Cię przez tworzenie klasy z odpowiednimi zmiennymi i metodami oraz pokażą, jak zmienne klasowe wpływają na wszystkie instancje.

Spróbuj swoich sił

# TODO: Zaimportuj klasę BankAccount z pliku bank_account.py
from bank_account import BankAccount

# TODO: Utwórz dwa konta z dokładnie takimi danymi:
# - account1: właściciel "Alice Smith", saldo $1000
# - account2: właściciel "Bob Jones", saldo $2000

# TODO: Wywołaj display_info() dla obu kont

# TODO: Zmień zmienną klasową interest_rate na 0.03 (3%)
# Użyj tego formatu: BankAccount.interest_rate = 0.03

# TODO: Wypisz tekst "After interest rate change:"

# TODO: Ponownie wywołaj display_info() dla obu kont, aby pokazać, że oba mają nową stopę procentową
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Python online