Tämä artikkeli auttaa lukijaa ymmärtämään perus Python-luokkia sekä joitakin perus sovelluksia todellisessa maailmassa. Käytämme Visual Studio Codea koodieditorina. Jos et ole asentanut Visual Studio Codea, ohjeet löytyvät ensimmäisestä blogista.

Python-luokat ja -oliot – sisällysluettelo:

  1. Python-luokat
  2. Python-luokat – määritelmä
  3. Python-luokkien alustaminen
  4. Kirjoitetaan ensimmäinen Python-luokka
  5. Attribuutit
  6. Luokan käyttäytyminen
  7. Oliot Pythonissa
  8. Perintö

Python-luokat

Kuten olemme keskustelleet ensimmäisessä blogissa, Python on olio-ohjelmointikieli. On kolme vaihetta, jotka ovat erittäin tärkeitä keskusteltaessa olio-ohjelmoinnista Pythonissa. Ensimmäinen on luokka, toinen on objekti ja kolmas on perintö. Aloitetaan siitä, mitä luokka tarkoittaa.

Python-luokat – määritelmä

Luokka on suunnitelma tai laajennettava ohjelma, joka auttaa objektien luomisessa. Luokka koostuu käyttäytymisestä ja tilasta. Luokan käyttäytyminen ilmenee luokan sisällä olevien funktioiden kautta, joita kutsutaan metodeiksi. Luokan tila ilmenee luokan sisällä olevien muuttujien avulla, joita kutsutaan attribuuteiksi.

Python-luokkien alustaminen

Luokka voidaan alustaa seuraavalla syntaksilla.

Luokka Pythonissa määritellään käyttämällä “class” avainsanaa luokan nimen jälkeen. Python-funktion perussyntaksi on esitetty alla.

Esimerkiksi:

<img src="https://firmbee.com/wp-content/uploads/Python_9-800x600.png" alt="Python_classes" width="800" height="600" class="alignnone size-medium wp-image-21409 img-fluid" />
# Luo funktio
# luokka Apina
class classname:

Huom: luokan nimellä on samat säännöt kuin muuttujan määrittelyllä.

Kirjoitetaan ensimmäinen Python-luokka

# ensimmäinen luokka

class Animals:
	pass

Yllä olevassa koodilohkossa olemme kirjoittaneet luokan, jota kehitämme edelleen blogissa. Kuten näet, olemme käyttäneet “class” avainsanaa.

Katso nyt, miten lisätään komponentteja eläinten luokkaan. Mutta ennen sitä opitaan “init()” konstruktorista. Konstruktoreita käytetään objektin instansioimiseen. Tässä __init__() käytetään objektin instansioimiseen. Konstruktori voi olla oletus, jossa on vain self argumenttina tai parametrisoitu tarvittavilla argumenteilla.

Attribuutit

On kahta erilaista attribuuttityyppiä, ensimmäiset ovat luokkamuuttujia ja toiset ovat instanssimuuttujia. Luokkamuuttujat ovat muuttujia, jotka kuuluvat luokalle. Nämä muuttujat ovat myös kaikkien luokan instanssien käytettävissä. Siksi niiden arvo ei muutu, vaikka instanssi muuttuisi.

# luokkamuuttujat

class Animals:
	type=”mammals”

Instanssimuuttujat ovat muuttujia, jotka kuuluvat itse instansseille. Siksi niiden arvo muuttuu instanssin muuttuessa.

# luokkamuuttujat

class Animals:
	def __init__(self,legs):
		self.legs=legs
		

Huom: Instanssimuuttujia ei voi käyttää luokan nimen kautta, koska ne muuttuvat sen mukaan, mikä objekti niitä käyttää.

Tehdään ohjelma, jossa on sekä luokka- että instanssimuuttujat määriteltynä.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	

Yllä olevassa ohjelmassa olemme käyttäneet sekä instanssi- että luokkamuuttujia. Joten nämä muuttujat muodostavat luokan attribuutit.

Luokan käyttäytyminen

Kuten keskustelimme, luokan käyttäytyminen määritellään luokan sisällä olevilla metodeilla. Mutta ennen kuin siirrymme käyttäytymiseen, meidän on aloitettava “self” parametrin keskustelu, jota käytimme __init__():ssa.

Self:

Hyvin yksinkertaisesti sanottuna, aina kun liitämme jotain self:iin, se tarkoittaa, että muuttuja tai funktio kuuluu kyseiselle luokalle. Myös “self”:in avulla luokan attribuutteja tai metodeja voidaan käyttää.

Metodit:

Luokan metodit ovat luokan sisällä olevia funktioita, joilla on ensimmäinen argumentti “self”. Metodi luokan sisällä määritellään käyttämällä “def” avainsanaa.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)
 

Yllä olevassa “bark” metodissa, koska käytämme name muuttujaa, joka on instanssimuuttuja, käytämme sitä “self”:in avulla ja tämä funktio tulostaa “woof woof!!!”, vain jos objektille annettu nimi on koira.

Olemme käsitelleet suurinta osaa luokan komponenteista, mutta saatat miettiä, miten nähdä, toimiiko luokka. Vastaus tähän on, että ellemme luo luokan objektia, emme näe, mitä luokka tekee. Nyt määritellään ja luodaan luokan objekti.

Oliot Pythonissa

Objekti on luokan instanssi. Luokka on vain suunnitelma, mutta objekti on luokan instanssi, jolla on todelliset arvot.

Koodia objektin määrittämiseksi tai luomiseksi on esitetty alla.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)
 
dog=Animals(“dog”,4)
 

Objektin luomiseen syntaksi on objectname=classname(arguments). Joten tässä annamme eläimen nimeksi koira ja jalkojen määräksi 4. Nyt, kun luokan objekti on luotu, seuraava vaihe on käyttää objektia sen attribuuttien käyttämiseen. Käyttääksemme luokan attribuutteja objektin avulla, muista, että vain instanssimuuttujat voidaan käyttää objektin avulla. Luokkamme instanssimuuttujat ovat name ja legs.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)
 
dog=Animals(“dog”,4)
print(dog.name)
print(dog.legs)
 

Kuten näemme, voimme käyttää instanssimuuttujia piste-notaatiolla.

Tutkitaan tulosta.

#Tuloste

dog
4

Käyttääksemme luokan sisällä olevia funktioita tai metodeja, käytämme piste-notaatiota. Esimerkki on esitetty alla.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)
 
dog=Animals(“dog”,4)
print(dog.name)
print(dog.legs)
print(dog.bark())
#Tuloste

dog
4
woof woof!!!

Yllä olevassa esimerkissä näemme, että käytämme luokan metodia “bark” luomamme koira-objektin avulla. Näemme, että emme käytä “self” parametria funktion argumenteissa. Tämä johtuu siitä, että emme tarvitse “self”:in käyttöä luokan ulkopuolella, koska objekti itsessään toimii self:inä.

Perintö

Perintö on prosessi, jonka kautta luokan attribuutit ja metodit voidaan siirtää lapsiluokalle. Luokka, josta lapsiluokka perii, on vanhempiluokka. Perinnön syntaksi on esitetty alla.

#Perintö

class parent:

class child(parent):

Yllä olevasta kuvasta näemme, että perinnön syntaksissa asetamme vanhempiluokan nimen argumentiksi lapsiluokalle. Käytetään Animals-luokkaa ja tehdään lapsiluokka nimeltä koira. Tämä on esitetty alla.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)

class Dog(Animals):
	def __init__(self,name,legs,breed):
		Animals.__init__(self,name,legs)
		self.breed=breed

Yllä olevassa esimerkkikoodissa teimme koira-luokan, joka laajentaa aiemmin luotua eläinluokkaa. Käytämme myös Animals-luokan parametreja Animals.__init__(arguments) avulla, joilla on nimi ja jalat, jotka periytyvät koira-luokalle. Sitten teemme instanssiattribuutin koira-luokalle, joka on rotu.

Tehdään nyt objekti koira-luokasta ja käytetään eläinluokan attribuutteja ja metodeja.

class Animals:
	type=”mammals”
	def __init__(self,name,legs):
		self.name=name
		self.legs=legs
	def bark(self):
		if self.name==”dog”:
			print(“woof woof!!!”)
		else:
			print(“not a dog”)

class Dog(Animals):
	def __init__(self,name,legs,breed):
		Animals.__init__(self,name,legs)
		self.breed=breed

pug=Dog("dog",4,"pug")
pug.breed
pug.name
pug.legs
pug.bark()

#Tuloste

pug
dog
4
woof woof!!!

Kuten näemme tuloksesta, vanhempiluokan attribuutteja ja metodeja käytetään lapsiluokan objektin kautta.

Tässä blogissa olemme käsitelleet joitakin perusasioita luokista Pythonissa. Seuraavassa blogikirjoituksessa käsittelemme tiedostojen käsittelyä.

python_classes

Voit myös tykätä JavaScript-kurssistamme aloittelijasta edistyneeseen.

Robert Whitney

JavaScript-asiantuntija ja opettaja, joka valmentaa IT-osastoja. Hänen päämääränsä on nostaa tiimin tuottavuutta opettamalla muille, kuinka tehdä tehokasta yhteistyötä koodauksen aikana.

View all posts →