Dajte novoj knjizi početno stanje.
Već ste koristili __init__ da primite naslov i autora. Konstruktor može da postavi i podrazumevanu vrednost. Ovde je svaka nova knjiga dostupna, osim ako pozivalac ne kaže drugačije.
class Book:
def __init__(self, title, author, available=True):
self.title = title
self.author = author
self.available = available
dune = Book("Dune", "Frank Herbert")
print(dune.available)title i author su obavezni argumenti, pa ih svaki poziv Book mora proslediti. available=True je podrazumevani argument, pa se koristi kada treća vrednost nije prosleđena.
TruePosle kreiranja, atribut može da se promeni. Dodela dune.available = False ažurira samo objekat dune.
Kontrolna lista konstruktora: Prvo koristite self, primite potrebne vrednosti i sačuvajte ih pomoću self.attribute. Podrazumevane vrednosti pripadaju listi parametara, posle obaveznih argumenata.
class Book:
def __init__(self, title, author, available=True):
self.title = title
self.author = author
self.available = available
dune = Book("Dune", "Frank Herbert")
foundation = Book("Foundation", "Isaac Asimov", False)
dune.available = False
print(dune.available)
print(foundation.available)dune počinje sa podrazumevanim True, a zatim se menja u False. foundation prima False direktno pri kreiranju.
Book("Dune", "Frank Herbert")
# title and author are required
Book("Foundation", "Isaac Asimov", False)
# available overrides its defaultObavezni argumenti opisuju podatke koje svaka knjiga mora da ima. Podrazumevana vrednost čini opciono stanje praktičnim, uz predvidivu početnu vrednost.
Napravite pouzdan konstruktor
- 1. Primite obavezne podatkeStavite title i author u __init__ kako Book ne bi mogao da se napravi bez njih.
- 2. Dodajte opciono stanjeStavite available=True iza obaveznih parametara da biste novim knjigama dali podrazumevanu dostupnost.
- 3. Sačuvajte na selfDodelite self.available = available kako bi vrednost pripadala ovoj instanci.
- 4. Ažurirajte jednu knjiguKoristite book.available = False kada je ta konkretna knjiga pozajmljena.
Česte greške
- Stavljanje podrazumevane vrednosti pre obaveznih podatakaObavezni parametri moraju biti pre podrazumevanih parametara u definiciji funkcije.
- Zaboravljanje čuvanja parametraNije dovoljno primiti available; dodelite ga self.available da biste ga sačuvali na objektu.
- Menjanje klase umesto objektaNapišite dune.available = False da promenite stanje jedne knjige.
- Očekivanje da podrazumevana vrednost prepiše prosleđenu vrednostPodrazumevana vrednost se koristi samo kada pozivalac izostavi taj argument.
