Kaip kurti Python klases ir objektus
Python klasės yra tarsi statybos planai ar šablonai. Juos galite naudoti, kad parašytumėte pakartotinai naudojamą kodą klasės atributų ir metodų forma.
Kas yra Python klasės?
Klasė yra abstrakti sąvoka, apibūdinanti objektų atributus ir metodus. Python klasė veikia kaip šablonas, skirtas konkrečių objektų, kurie yra klasės instancės, kūrimui. Pavyzdžiui, klasė Car gali apibrėžti tokius atributus kaip spalva ir prekės ženklas, taip pat tokius metodus kaip __drive__ arba __brake__.
Nors kiekvienas klasės objektas gali turėti unikalias atributų vertes, tos pačios klasės objektai dalijasi metodais ir pagrindiniu elgesio modeliu su kitais klasės egzemplioriais. Pavyzdžiui, klasės Car objektas my_car gali būti sukurtas su spalva __red__ ir prekės ženklu __Toyota__, bet metodai __drive__ ir __brake__ bus automatiškai perkelti į egzempliorių.
Kaip kurti Python klases
Python kalboje klases apibrėžiate naudodami raktinį žodį 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}"pythonPirmiau pateiktas kodas apibrėžia klasę, pavadintą MyClass. Ji turi konstruktorių __init__, kuris iškviečiamas objekto kūrimo metu ir inicijuoja du atributus: attribute1 ir attribute2. Metodas my_method grąžina suformatuotą eilutę, kurioje yra šių atributų reikšmės.
Norėdami išvesti objektą iš šios klasės, naudokite klasės pavadinimą, po kurio nurodykite skliaustelius:
object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()pythonPython klasių naudojimo pavyzdžiai
Python klasės gali kurti sudėtingas sistemas ir ryšius tarp skirtingų objektų. Toliau pateiktuose skyriuose parodysime, kaip dirbti su Python klasėmis.
__str()__ funkcija
Python kalbos funkcija __str__() yra specialus metodas, kurį galite apibrėžti Python klasėse. Įgyvendinus šią funkciją, ji grąžina eilutę, kuri atspindi vartotojui suprantamą objekto atvaizdą. Funkciją str() galite naudoti tiesiogiai objekte arba derinti ją su teiginiu 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: 30pythonPirmiau pateiktame kode __str__() metodas Person klasėje sukuria suformatuotą eilutę, kurioje rodomas asmens vardas ir amžius. Kai print(person1) yra vykdomas, jis automatiškai iššaukia __str__() metodą person1 objekto ir išveda eilutę, kurią grąžina metodas.
Metodų apibrėžimas Python klasėse
Python kalboje galite apibrėžti metodus klasėje, kad būtų atliekamos operacijos su klasės objektais. Šiuos metodus gali iškviesti sukurti objektai.
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 pavyzdyje apibrėžiame klasę Rectangle su dviem metodais area() ir perimeter(), kurie apskaičiuoja stačiakampio plotą ir perimetrą, naudodami objekto inicijavimo metu nurodytą ilgį ir plotį. Python kalboje self klasės metode veikia kaip nuoroda į objektą, kuriam šiuo metu taikomas metodas.
Objektas my_rectangle sukurtas su 5 ilgio ir 10 pločio matmenimis. Tada šiam objektui taikome metodus area() ir perimeter(), kad apskaičiuotume atitinkamas vertes.
Objektų savybių keitimas
. taškų operatorius gali būti naudojamas norint pasiekti konkrečius objekto atributus ir atnaujinti jų vertes. Naujas vertes galite priskirti tiesiogiai atributui.
person1.name = "Sarah"
person1.age = 35pythonRaktinis žodis del naudojamas objekto savybėms ištrinti.
del person1.namepythonAtminkite, kad instancinės kintamieji skiriasi nuo Python klasės kintamųjų. Klasės kintamieji apibrėžiami už konstruktoriaus ribų ir juos galima keisti tik naudojant klasės pavadinimą.