Python-luokkien ja -objektien luominen
Python-luokat ovat kuin rakennuspiirustuksia tai malleja. Niiden avulla voit kirjoittaa uudelleenkäytettävää koodia luokkien attribuuttien ja metodien muodossa.
Mitä ovat Python-luokat?
Luokka on abstrakti käsite, joka määrittelee objektien attribuutit ja metodit. Python-luokka toimii mallina konkreettisten objektien luomiselle, jotka ovat luokan instansseja. Esimerkiksi Car voisi määritellä attribuutteja, kuten väri ja merkki, sekä metodeja, kuten __drive__ tai __brake__.
Vaikka jokaisella luokan objektilla voi olla ainutlaatuiset attribuuttiarvot, saman luokan objektit jakavat menetelmät ja perusrakenteen muiden luokan instanssien kanssa. Esimerkiksi luokan Car objekti my_car voidaan luoda värillä __red__ ja merkillä __Toyota__, mutta menetelmät __drive__ ja __brake__ siirretään automaattisesti instanssiin.
Python-luokkien luominen
Pythonissa määritellään luokat avainsanalla 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}"pythonYllä oleva koodi määrittelee luokan nimeltä MyClass. Sillä on konstruktori __init__, joka kutsutaan objektin luomisen yhteydessä ja alustaa kaksi attribuuttia: attribute1 ja attribute2. Menetelmä my_method palauttaa muotoillun merkkijonon, joka sisältää näiden attribuuttien arvot.
Jos haluat johtaa objektin tästä luokasta, käytä luokkanimeä suluissa:
object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()pythonEsimerkkejä Python-luokkien käytöstä
Python-luokat voivat luoda monimutkaisia järjestelmiä ja suhteita eri entiteettien välille. Seuraavissa osioissa näytämme, miten Python-luokkia käytetään.
__str()__ toiminto
Pythonin __str__() on erityinen menetelmä, jonka voit määritellä Python-luokissa. Kun se on toteutettu, se palauttaa merkkijonon, joka edustaa käyttäjäystävällistä esitystä objektista. Voit käyttää str() suoraan objektissa 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: 30pythonYllä olevassa koodissa __str__() Person okassa luo muotoillun merkkijonon, joka näyttää henkilön nimen ja iän. Kun print(person1) suoritetaan, se kutsuu automaattisesti person1 -objektin __str__() menetelmän ja tulostaa menetelmän palauttaman merkkijonon.
Menetelmien määritteleminen Python-luokissa
Pythonissa voit määritellä luokassa metodeja, joilla suoritetaan operaatioita luokan objekteille. 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 = 30pythonPython-esimerkissä määritellään luokka Rectangle kahdella menetelmällä area() ja perimeter(), jotka laskevat suorakulmion pinta-alan ja kehän objektin alustuksen yhteydessä annettujen pituuden ja leveyden perusteella. Pythonissa self luokkametodissa toimii viittauksena objektiin, johon menetelmää parhaillaan sovelletaan.
Objekti my_rectangle luodaan pituudella 5 ja leveydellä 10. Sitten kutsumme tämän objektin menetelmät area() ja perimeter() laskeaksemme vastaavat arvot.
Objektien ominaisuuksien muuttaminen
. voidaan käyttää objektin tiettyjen attribuuttien käyttämiseen ja niiden arvojen päivittämiseen. Voit määrittää uusia arvoja suoraan attribuutille.
person1.name = "Sarah"
person1.age = 35pythonAvainsanaa del käytetään objektin ominaisuuksien poistamiseen.
del person1.namepythonMuista, että instanssimuuttujat eroavat Python-luokkamuuttujista. Luokkamuuttujat määritellään konstruktorin ulkopuolella, ja niitä voidaan muuttaa vain luokkanimen avulla.