Specijalne metode omogućavaju objektima da prirodno rade sa print() i len().
Kako Python zna šta da prikaže kada ispišemo objekat ili zatražimo njegovu dužinu?
class Book:
def __init__(self, title, author): self.title, self.author = title, author
def __str__(self): return f"{self.title} by {self.author}"
book = Book("Dune", "Frank Herbert")
print(book)
class BookCollection:
def __init__(self): self.books = []
def add_book(self, book): self.books.append(book)
def __len__(self): return len(self.books)
collection = BookCollection()
for title in ("Dune", "The Hobbit", "Python Basics"): collection.add_book(title)
print(len(collection))Bez __str__(), print(book) obično prikazuje nečitljiv podrazumevani opis objekta. __str__() vraća čitljiv tekst za print(book) i str(book); mora koristiti return, a ne print(). BookCollection čuva knjige u listi, a len(collection) koristi njenu __len__() metodu da vrati nenegativan ceo broj. Ovo nas priprema za Library sa pravim Book objektima u narednoj lekciji Composition. __str__() vraća string, dok __len__() vraća nenegativan ceo broj.
Dune by Frank Herbert
3Pokušaj da promeniš jednu vrednost, zatim objasni koji deo kolekcije se promenio i zašto.
Zapamti: Pročitaj operaciju nad kolekcijom pre nego što predvidiš rezultat.
class Book:
def __init__(self, title, author): self.title, self.author = title, author
def __str__(self): return f"{self.title} by {self.author}"
book = Book("Dune", "Frank Herbert")
print(book)
class BookCollection:
def __init__(self): self.books = []
def add_book(self, book): self.books.append(book)
def __len__(self): return len(self.books)
collection = BookCollection()
for title in ("Dune", "The Hobbit", "Python Basics"): collection.add_book(title)
print(len(collection))Pokreni primer, zatim promeni jednu vrednost i posmatraj rezultat.
