2. Tweet-klassen
Tweet-klassen skal lagre informasjon om en tweet, det vil si tweetens tekst, en referanse til brukeren som har laget tweeten og en id.
classDiagram
class Tweet {
int id
str tekst
Bruker bruker
}
Oppgave: Lag Tweet-klassen
Section titled “Oppgave: Lag Tweet-klassen”Krav:
- Klassen skal ha en klassevariabel
neste_idsom starter på 1 __init__skal ta imot to argumenter:tekstogbruker- Hvert nytt objekt skal:
- få
idlikneste_id - øke
neste_idmed 1
- få
- Tweet-teksten lagres i
tekst - Brukeren som skrev tweeten lagres i
bruker
Tips til bruk av klassevariabler for å få unik ID
Vi vil at hver tweet skal få en unik ID. Dette kan løses med en klassevariabel som deles av alle Tweet-objekter. Her er et eksempel på bruk av en klassevariabel i en annen kode:
class Plante: neste_plante_id = 1 # klassevariabel def __init__(self): self.id = Plante.neste_plante_id # setter self.id til å være lik klassevariabelen Plante.neste_plante_id += 1 # øker klassevariabelen med 1
# Lager en liste med 100 planter:planter = [Plante() for i in range(100)]
# Hver plante har nå en unik id.# Printer id til planten som ligger på indeks 40print(planter[40].id)Løsningsforslag
class Tweet: neste_id = 1 def __init__(self, tekst, bruker): self.id = Tweet.neste_id self.tekst = tekst self.bruker = bruker Tweet.neste_id += 1Testing
Section titled “Testing”Med nøkkelordet assert kan vi forsikre oss at koden fungerer som den skal.
Hvis en assert-test ikke er True vil koden gi feilmelding og programmet stoppe.
Foreløpig har vi ikke laget Bruker-klassen, så vi sender None som bruker for å teste at ID-systemet fungerer:
t1 = Tweet("Hei verden", None)t2 = Tweet("Dette er en ny tweet", None)t3 = Tweet("Wow! Denne Twitter-klonen er skikkelig kul", None)
assert t1.id == 1assert t2.id == 2assert t3.id == 3
print("Alt fungerer som det skal")