Python-luokat ovat kuin ra­ken­nus­pii­rus­tuk­sia tai malleja. Niiden avulla voit kir­joit­taa uu­del­leen­käy­tet­tä­vää koodia luokkien att­ri­buut­tien ja metodien muodossa.

Mitä ovat Python-luokat?

Luokka on abstrakti käsite, joka mää­rit­te­lee objektien att­ri­buu­tit ja metodit. Python-luokka toimii mallina konk­reet­tis­ten objektien luo­mi­sel­le, jotka ovat luokan ins­tans­se­ja. Esi­mer­kik­si Car voisi mää­ri­tel­lä att­ri­buut­te­ja, kuten väri ja merkki, sekä metodeja, kuten __drive__ tai __brake__.

Vaikka jo­kai­sel­la luokan ob­jek­til­la voi olla ai­nut­laa­tui­set att­ri­buut­tiar­vot, saman luokan objektit jakavat me­ne­tel­mät ja pe­rus­ra­ken­teen muiden luokan ins­tans­sien kanssa. Esi­mer­kik­si luokan Car objekti my_car voidaan luoda värillä __red__ ja merkillä __Toyota__, mutta me­ne­tel­mät __drive__ ja __brake__ siir­re­tään au­to­maat­ti­ses­ti ins­tans­siin.

Python-luokkien luominen

Pyt­ho­nis­sa mää­ri­tel­lään luokat avain­sa­nal­la class.

class MyClass:
    # Constructor method called when creating an object
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2
    
    # Method defined within the class
    def my_method(self):
        return f"Attribute 1: {self.attribute1}, Attribute 2: {self.attribute2}"
python

Yllä oleva koodi mää­rit­te­lee luokan nimeltä MyClass. Sillä on kon­struk­to­ri __init__, joka kutsutaan objektin luomisen yh­tey­des­sä ja alustaa kaksi att­ri­buut­tia: attribute1 ja attribute2. Menetelmä my_method palauttaa muo­toil­lun merk­ki­jo­non, joka sisältää näiden att­ri­buut­tien arvot.

Jos haluat johtaa objektin tästä luokasta, käytä luok­ka­ni­meä suluissa:

object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()
python

Esi­merk­ke­jä Python-luokkien käytöstä

Python-luokat voivat luoda mo­ni­mut­kai­sia jär­jes­tel­miä ja suhteita eri en­ti­teet­tien välille. Seu­raa­vis­sa osioissa näytämme, miten Python-luokkia käytetään.

__str()__ toiminto

Pythonin __str__() on erityinen menetelmä, jonka voit mää­ri­tel­lä Python-luokissa. Kun se on to­teu­tet­tu, se palauttaa merk­ki­jo­non, joka edustaa käyt­tä­jäys­tä­väl­lis­tä esitystä ob­jek­tis­ta. Voit käyttää str() suoraan ob­jek­tis­sa tai yhdistää sen print().

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"
person1 = Person("Alice", 30)
print(person1) # Output: Name: Alice, Age: 30
python

Yllä olevassa koodissa __str__() Person okassa luo muo­toil­lun merk­ki­jo­non, joka näyttää henkilön nimen ja iän. Kun print(person1) suo­ri­te­taan, se kutsuu au­to­maat­ti­ses­ti person1 -objektin __str__() me­ne­tel­män ja tulostaa me­ne­tel­män pa­laut­ta­man merk­ki­jo­non.

Me­ne­tel­mien mää­rit­te­le­mi­nen Python-luokissa

Pyt­ho­nis­sa voit mää­ri­tel­lä luokassa metodeja, joilla suo­ri­te­taan ope­raa­tioi­ta luokan ob­jek­teil­le. Näitä metodeja voivat sitten kutsua luodut objektit.

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    
    def area(self):
        return self.length * self.width
    def perimeter(self):
        return 2 * (self.length + self.width)
# Creating an object of the class
my_rectangle = Rectangle(5, 10)
# Calling methods of the object
area = my_rectangle.area()
perimeter = my_rectangle.perimeter()
# Printing the calculated values
print("Area =", area) # Output: Area = 50
print("Perimeter =", perimeter) # Output: Perimeter = 30
python

Python-esi­mer­kis­sä mää­ri­tel­lään luokka Rectangle kahdella me­ne­tel­mäl­lä area() ja perimeter(), jotka laskevat suo­ra­kul­mion pinta-alan ja kehän objektin alus­tuk­sen yh­tey­des­sä an­net­tu­jen pituuden ja leveyden pe­rus­teel­la. Pyt­ho­nis­sa self luok­ka­me­to­dis­sa toimii viit­tauk­se­na objektiin, johon me­ne­tel­mää par­hail­laan so­vel­le­taan.

Objekti my_rectangle luodaan pi­tuu­del­la 5 ja le­vey­del­lä 10. Sitten kutsumme tämän objektin me­ne­tel­mät area() ja perimeter() las­keak­sem­me vastaavat arvot.

Objektien omi­nai­suuk­sien muut­ta­mi­nen

. voidaan käyttää objektin tiettyjen att­ri­buut­tien käyt­tä­mi­seen ja niiden arvojen päi­vit­tä­mi­seen. Voit määrittää uusia arvoja suoraan att­ri­buu­til­le.

person1.name = "Sarah"
person1.age = 35
python

Avain­sa­naa del käytetään objektin omi­nai­suuk­sien pois­ta­mi­seen.

del person1.name
python
Huomio

Muista, että ins­tans­si­muut­tu­jat eroavat Python-luok­ka­muut­tu­jis­ta. Luok­ka­muut­tu­jat mää­ri­tel­lään kon­struk­to­rin ul­ko­puo­lel­la, ja niitä voidaan muuttaa vain luok­ka­ni­men avulla.

Siirry pää­va­lik­koon