Python-klassid on nagu ehi­tus­plaa­nid või mallid. Neid saab kasutada kor­duv­ka­su­ta­tava koodi kir­ju­ta­miseks klassi at­ri­buu­tide ja meetodite vormis.

Mis on Python-klassid?

Klass on abst­raktne mõiste, mis kirjeldab objektide atribuute ja meetodeid. Python-klass toimib mallina konk­reet­sete objektide loomiseks, mis on klassi ins­tant­sid. Näiteks klass Car võiks mää­rat­leda at­ri­buu­did nagu värv ja bränd ning meetodid nagu __drive__ või __brake__.

Kuigi iga klassi objekt võib omada uni­kaal­seid atribuudi väärtusi, jagavad sama klassi objektid meetodeid ja põhilist käitumise raa­mis­tikku teiste klassi ins­tant­si­dega. Näiteks võib klassi Car objekti my_car luua värviga __red__ ja brändiga __Toyota__, kuid meetodid __drive__ ja __brake__ kantakse au­to­maat­selt üle ins­tant­sile.

Kuidas luua Python-klasse

Pythonis mää­rat­le­takse klassid märksõna class abil.

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

Eespool olev kood määratleb klassi nimega MyClass. Sellel on konst­ruk­tor __init__, mis kut­su­takse esile objekti loomisel, init­sia­li­see­ri­des kaks atribuuti: attribute1 ja attribute2. Meetod my_method tagastab vor­min­da­tud stringi, mis sisaldab nende at­ri­buu­tide väärtusi.

Selle klassi objektide tu­le­ta­miseks kasuta klassi nime, millele järgneb sulgudes:

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

Näited Python-klasside ka­su­ta­mise kohta

Python-klassid või­mal­da­vad luua keerukaid süsteeme ja suhteid erinevate objektide vahel. Järg­mis­tes jaotistes näitame, kuidas Python-klas­si­dega töötada.

__str()__ funkt­sioon

Pythonis on funkt­sioon __str__() spet­siaalne meetod, mida saab de­fi­nee­rida Python-klassides. Ra­ken­da­misel tagastab see stringi, mis esindab objekti ka­su­ta­ja­sõb­ra­likku kujutist. Funkt­siooni str() saab kasutada otse objektil või kom­bi­nee­rida selle 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

Eespool toodud koodis loob klassi Person meetod __str__() vor­min­da­tud stringi, mis kuvab isiku nime ja vanuse. Kui print(person1) täi­de­takse, kutsub see au­to­maat­selt välja objekti person1 meetodi __str__() ja väljastab meetodi poolt ta­gas­ta­tud stringi.

Meetodite mää­rat­le­mine Python-klassides

Pythonis saab klassi sees de­fi­nee­rida meetodeid, et teha ope­rat­sioone klassi ob­jek­ti­dega. Neid meetodeid saavad seejärel kutsuda loodud objektid.

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’i näites mää­rat­leme klassi Rectangle kahe meetodiga area() ja perimeter(), mis arvutavad rist­kü­liku pindala ja üm­ber­mõõdu, kasutades objekti alg­sea­dis­ta­misel antud pikkust ja laius. Python’is toimib klas­si­mee­todi self viide objektile, millele meetod hetkel ra­ken­da­takse.

Objekt my_rectangle loodakse pikkusega 5 ja laiusega 10. Seejärel kutsume selle objekti meetodid area() ja perimeter(), et arvutada vastavad väärtused.

Objektide omaduste muutmine

. ope­raa­to­rit saab kasutada objekti konk­reet­sete at­ri­buu­tide juur­de­pääs­uks ja nende väärtuste uuen­da­miseks. Uued väärtused saab at­ri­buu­ti­dele otse omistada.

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

Märksõna del ka­su­ta­takse objekti omaduste kus­tu­ta­miseks.

del person1.name
python
Note

Pidage meeles, et instantsi muutujad erinevad Pythoni klassi muu­tu­ja­test. Klas­si­muu­tu­jad on de­fi­nee­ri­tud konst­ruk­tori väl­jas­pool ja neid saab muuta ainult klassi nime kasutades.

Go to Main Menu