Python Academy · Oppitunti

Luokat ja __init__-metodi

Määrittäkää luokkia, luokaa olioita ja alustakaa attribuutteja.

Oppitunti 1/413 vaihetta

Luokat ja __init__-metodi on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Luokan määrittäminen

Käyttäkää class-avainsanaa luokan määrittämiseen. Käytännön mukaan luokkien nimet kirjoitetaan CapWords-muodossa.

class Dog:
    pass

fido = Dog()
print(type(fido))  # <class '__main__.Dog'>

Metodi __init__

__init__ kutsutaan automaattisesti, kun olio luodaan. Käyttäkää sitä instanssiattribuuttien alustamiseen.

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

fido = Dog("Fido", "Labrador")
print(fido.name)   # Fido

self selitettynä

self viittaa nykyiseen instanssiin. Sen on oltava jokaisen instanssimetodin ensimmäinen parametri. Python välittää sen automaattisesti.

class Counter:
    def __init__(self):
        self.count = 0

    def increment(self):
        self.count += 1

c = Counter()
c.increment()
print(c.count)  # 1

Useita instansseja

Jokaisella instanssilla on oma kopionsa metodiin __init__ asetetuista instanssiattribuuteista.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p1 = Point(1, 2)
p2 = Point(5, 7)
print(p1.x, p2.x)  # 1 5

Oletusparametriarvot metodissa __init__

Antakaa metodin __init__ parametreille oletusarvot, jotta joistakin argumenteista tulee valinnaisia.

class Circle:
    def __init__(self, radius=1.0):
        self.radius = radius

c1 = Circle()
c2 = Circle(5)
print(c1.radius, c2.radius)  # 1.0 5

Instanssimetodit

Luokan sisällä määritellyt metodit käsittelevät instanssia self-parametrin kautta.

class Rectangle:
    def __init__(self, w, h):
        self.w = w
        self.h = h

    def area(self):
        return self.w * self.h

r = Rectangle(4, 5)
print(r.area())  # 20

Attribuuttien lisääminen luomisen jälkeen

Voitte lisätä instanssille attribuutteja luomisen jälkeen, mutta kaikkien attribuuttien ilmoittaminen metodissa __init__ on selkeämpää.

class Person:
    def __init__(self, name):
        self.name = name

p = Person("Alice")
p.age = 30      # added after creation
print(p.name, p.age)

Metodin __init__ palautusarvo

__init__-metodin on palautettava None. Minkä tahansa muun arvon palauttaminen aiheuttaa TypeError-virheen.

class Broken:
    def __init__(self):
        return 42   # TypeError!

# Correct
class OK:
    def __init__(self):
        self.value = 42
        # implicit return None

Instanssin tyypin tarkistaminen

Käyttäkää isinstance()-funktiota tarkistamaan, onko olio jonkin luokan instanssi.

class Animal:
    pass

class Dog(Animal):
    pass

d = Dog()
print(isinstance(d, Dog))     # True
print(isinstance(d, Animal))  # True

Attribuutti __dict__

Jokainen instanssi tallentaa attribuuttinsa __dict__-sanakirjaan.

class Book:
    def __init__(self, title, pages):
        self.title = title
        self.pages = pages

b = Book("Python 101", 300)
print(b.__dict__)  # {'title': 'Python 101', 'pages': 300}

Attribuuttien poistaminen

Käyttäkää del-käskyä attribuutin poistamiseen instanssilta ajon aikana.

class Config:
    def __init__(self):
        self.debug = True
        self.version = "1.0"

cfg = Config()
del cfg.debug
print(hasattr(cfg, "debug"))  # False

Pikatarkistus

Mikä on self-parametrin tarkoitus Python-luokan metodeissa?

Kertaus

Luokat ovat olioiden malleja. __init__ alustaa instanssiattribuutit, self viittaa nykyiseen olioon, ja jokainen instanssi ylläpitää omaa attribuuttisanakirjaansa.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Luokat ja __init__-metodi” ilmainen?

Kyllä – oppitunnin ”Luokat ja __init__-metodi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Luokat ja __init__-metodi”?

Määrittäkää luokkia, luokaa olioita ja alustakaa attribuutteja. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Luokat ja __init__-metodi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Luokat ja __init__-metodi
  2. Instanssiattribuutit ja luokka-attribuutit
  3. Instanssimetodit ja self
  4. Taikametodit: __str__ ja __repr__
← Takaisin: Python Academy