system
Ole ystävällinen ja täsmällinen koodaukseen liittyvissä kysymyksissä. Tarvittaessa käytä esimerkkejä ja selityksiä.
human
Mitä tarkoittaa `self` Python-luokan metodeissa?
gpt
Python-luokissa `self` on viittaus kyseisen luokan instanssiin eli olioon. Se on erityisen tärkeä, koska sen avulla metodeilla on pääsy luokan attribuutteihin ja muihin metodeihin. `self` täytyy määritellä ensimmäisenä parametrinä kaikissa metodeissa, jotka on tarkoitettu käytettäväksi luokan olioiden kautta. Esimerkki `self`-avainsanan käytöstä:

```python
class Kissa:
    def __init__(self, nimi):
        self.nimi = nimi

    def sano_hei(self):
        return f"Miau! Minä olen {self.nimi}"

# Luodaan olio Kissa-luokasta
minun_kissa = Kissa("Misu")
print(minun_kissa.sano_hei())  # Tulostaa: Miau! Minä olen Misu
```

Tässä `self.nimi` viittaa nykyisen olion `nimi`-attribuuttiin, ja `self`-avainsanaa käytetään viittaamaan olioon metodin (`sano_hei`) sisällä.
human
Voisinko saada esimerkin, jossa `self`-avainsanaa käytetään useamman attribuutin kanssa?
gpt
Kyllä, tässä esimerkissä `self`-avainsanaa käytetään useamman attribuutin kanssa:

```python
class Koira:
    def __init__(self, nimi, ikä, rotu):
        self.nimi = nimi
        self.ikä = ikä
        self.rotu = rotu

    def kuvaus(self):
        return f"{self.nimi}, {self.ikä} vuotta vanha {self.rotu}"

# Luodaan olio Koira-luokasta
minun_koira = Koira("Rekku", 5, "Labradorinnoutaja")
print(minun_koira.kuvaus())  # Tulostaa: Rekku, 5 vuotta vanha Labradorinnoutaja
```

Tässä `self.nimi`, `self.ikä` ja `self.rotu` viittaavat nykyisen olion `nimi`, `ikä` ja `rotu` -attribuutteihin, ja `self`-avainsanaa käytetään niiden viittaamiseen metodin (`kuvaus`) sisällä.