Kuidas luua Python-klassid ja objektid
Python-klassid on nagu ehitusplaanid või mallid. Neid saab kasutada korduvkasutatava koodi kirjutamiseks klassi atribuutide ja meetodite vormis.
Mis on Python-klassid?
Klass on abstraktne mõiste, mis kirjeldab objektide atribuute ja meetodeid. Python-klass toimib mallina konkreetsete objektide loomiseks, mis on klassi instantsid. Näiteks klass Car võiks määratleda atribuudid nagu värv ja bränd ning meetodid nagu __drive__ või __brake__.
Kuigi iga klassi objekt võib omada unikaalseid atribuudi väärtusi, jagavad sama klassi objektid meetodeid ja põhilist käitumise raamistikku teiste klassi instantsidega. Näiteks võib klassi Car objekti my_car luua värviga __red__ ja brändiga __Toyota__, kuid meetodid __drive__ ja __brake__ kantakse automaatselt üle instantsile.
Kuidas luua Python-klasse
Pythonis määratletakse 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}"pythonEespool olev kood määratleb klassi nimega MyClass. Sellel on konstruktor __init__, mis kutsutakse esile objekti loomisel, initsialiseerides kaks atribuuti: attribute1 ja attribute2. Meetod my_method tagastab vormindatud stringi, mis sisaldab nende atribuutide väärtusi.
Selle klassi objektide tuletamiseks kasuta klassi nime, millele järgneb sulgudes:
object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()pythonNäited Python-klasside kasutamise kohta
Python-klassid võimaldavad luua keerukaid süsteeme ja suhteid erinevate objektide vahel. Järgmistes jaotistes näitame, kuidas Python-klassidega töötada.
__str()__ funktsioon
Pythonis on funktsioon __str__() spetsiaalne meetod, mida saab defineerida Python-klassides. Rakendamisel tagastab see stringi, mis esindab objekti kasutajasõbralikku kujutist. Funktsiooni str() saab kasutada otse objektil või kombineerida 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: 30pythonEespool toodud koodis loob klassi Person meetod __str__() vormindatud stringi, mis kuvab isiku nime ja vanuse. Kui print(person1) täidetakse, kutsub see automaatselt välja objekti person1 meetodi __str__() ja väljastab meetodi poolt tagastatud stringi.
Meetodite määratlemine Python-klassides
Pythonis saab klassi sees defineerida meetodeid, et teha operatsioone klassi objektidega. 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 = 30pythonPython’i näites määratleme klassi Rectangle kahe meetodiga area() ja perimeter(), mis arvutavad ristküliku pindala ja ümbermõõdu, kasutades objekti algseadistamisel antud pikkust ja laius. Python’is toimib klassimeetodi self viide objektile, millele meetod hetkel rakendatakse.
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
. operaatorit saab kasutada objekti konkreetsete atribuutide juurdepääsuks ja nende väärtuste uuendamiseks. Uued väärtused saab atribuutidele otse omistada.
person1.name = "Sarah"
person1.age = 35pythonMärksõna del kasutatakse objekti omaduste kustutamiseks.
del person1.namepythonPidage meeles, et instantsi muutujad erinevad Pythoni klassi muutujatest. Klassimuutujad on defineeritud konstruktori väljaspool ja neid saab muuta ainult klassi nime kasutades.