Du tror self.teller += 1 øker klassevariabelen
Handler om: Klassevariabel
Når du skriver self.neste_nummer = self.neste_nummer + 1, LESER Python klassevariabelen, men SKRIVER en ny egenskap på det ene objektet. Den felles telleren står urørt, så alle objektene får samme nummer.
Eksempel
Tre billetter laget med self.neste_nummer += 1 i __init__ får alle nummer 1.
Slik tenker du riktig om det
Skriv klassens navn når du endrer det som er felles: Billett.neste_nummer. self. er objektets egen lomme — det du legger der, ser ingen andre.
Slik ser det ut i kode
Slik gikk det galt
class Billett:
neste_nummer = 1
def __init__(self):
self.nummer = self.neste_nummer
self.neste_nummer += 1 # øker bare dette objektet Slik fikser du det
class Billett:
neste_nummer = 1
def __init__(self):
self.nummer = Billett.neste_nummer
Billett.neste_nummer += 1