✦ Srednji nivo Pythona i OOP Srednji nivo Pythona

L2 · Koncept 05 · Osnove OOP-a

Delite biblioteku.
Neka svaka knjiga ostane jedinstvena.

Mini Library Manager sada odvaja podatke koje deli svaki Book od podataka koji pripadaju jednoj knjizi.

Cilj učenjaRazlikujte atribute klase od atributa instance, ažurirajte zajedničko stanje i prepoznajte kada jedna instanca zaklanja atribut klase.
01 Uči02 Isprobaj03 Predvidi

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

Jedna biblioteka, mnogo pojedinačnih knjiga.

Stavite atribut klase direktno unutar Book da bi bio zajednički. Stavite atribut instance na self u __init__ da biste svakoj knjizi dali sopstvenu vrednost.

class Book:
    library_name = "Mini Library"

    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.is_available = True

book = Book("Dune", "Frank Herbert")
print(Book.library_name)
print(book.title)

library_name pripada klasi Book i zajednički je. title pripada objektu book, jer self.title pravi atribut na toj instanci.

Mini Library Dune

Promena Book.library_name ažurira zajedničku vrednost za instance koje nemaju sopstveni library_name. Dodela book.library_name pravi poseban atribut instance koji zaklanja atribut klase.

↳

Redosled traženja atributa: Kada Python čita book.library_name, prvo proverava book, a zatim klasu Book. Vrednost instance zato skriva zajedničku vrednost za tu jednu knjigu.

Zajednička vrednost i jedna zaklonjena vrednost
class Book:
    library_name = "Mini Library"

    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.is_available = True

book_one = Book("Dune", "Frank Herbert")
book_two = Book("The Hobbit", "J. R. R. Tolkien")

Book.library_name = "City Library"
book_one.library_name = "Personal Shelf"

print(book_one.library_name)
print(book_two.library_name)

Book.library_name menja zajednički naziv u City Library. book_one tada dobija sopstvenu vrednost Personal Shelf, dok book_two i dalje koristi vrednost klase.

Gde atributi pripadaju
class Book:
    library_name = "Mini Library"  # class attribute

    def __init__(self, title):
        self.title = title            # instance attribute

Koristite atribut klase za jednu vrednost koju dele sve knjige. Koristite atribut instance za podatke koji se mogu razlikovati od knjige do knjige.

Pratite traženje atributa

  1. 1. Prvo pročitajte instancubook_one.library_name prvo traži library_name na book_one.
  2. 2. Zatim proverite klasuBez vrednosti instance, Python čita Book.library_name.
  3. 3. Promenite zajedničko stanjeBook.library_name = "City Library" menja vrednost koju koriste instance bez zaklanjanja.
  4. 4. Zaklonite jednu instancubook_one.library_name = "Personal Shelf" utiče samo na book_one.

Česte greške

  • Korišćenje zajedničke liste za podatke pojedinačne knjigePromenljivi atribut klase kao tags = [] deli svaka instanca. Napravite novu listu na self u __init__ kada svaka knjiga treba sopstvene oznake.
  • Očekivanje da dodela instanci ažurira sve knjigebook_one.library_name pravi ili menja samo vrednost book_one; ne menja Book.library_name.
  • Smatranje svakog atributa zajedničkimtitle, author i is_available su atributi instance jer se dodeljuju kroz self.
  • Zaboravljanje imena klase pri zajedničkom ažuriranjuKoristite Book.library_name da namerno ažurirate vrednost koju deli klasa.

Python radni prostor

Učitavanje Python okruženja…

Promenite zajednički naziv biblioteke, zatim jednoj knjizi dajte sopstveni naziv i uporedite obe knjige.

library_attributes.pyPython
IzlazČeka se Python
Okruženje pregledača se učitava. I dalje možeš da menjaš primer koda.

Pyodide pokreće Python u Web Worker-u pregledača. Zaustavlja se i ponovo pokreće ako se kod predugo izvršava. Izvršavanje u pregledaču nije potpuna bezbednosna granica; ne unosi tajne i ne oslanjaj se na njega za izolaciju nepouzdanog koda.

Šta će ovaj program ispisati?

Prvo pratite ažuriranje klase, zatim primetite da book_one dobija sopstveni atribut.

class Book:
    library_name = "Mini Library"

    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.is_available = True

book_one = Book("Dune", "Frank Herbert")
book_two = Book("The Hobbit", "J. R. R. Tolkien")

Book.library_name = "City Library"
book_one.library_name = "Personal Shelf"

print(book_one.library_name)
print(book_two.library_name)
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Obeležite biblioteku

Koristite jedan atribut klase za naziv biblioteke i atribute instance za podatke nove knjige.

Vaš ciljDefinišite Book.library_name, napravite dve knjige sa sopstvenim naslovima, promenite zajednički naziv i jednoj knjizi dajte ličnu oznaku.

library_labels_challenge.py

Opcioni nagoveštaji
  • Napišite library_name = "Mini Library" direktno u klasi, izvan __init__.
  • Koristite Book.library_name za zajedničko ažuriranje i book_one.library_name za oznaku jedne knjige.
Pitajte Slobyja za nagoveštaj
Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.