Monimuotoisuus
Tutustukaa siihen, miten monimuotoisuus mahdollistaa joustavan ja dynaamisen koodin.
Monimuotoisuus on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/6. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 6 oppituntia.
Johdatus polymorfismiin
Polymorfismi on olio-ohjelmoinnin (OOP) keskeinen käsite, jonka ansiosta eri luokkien olioita voidaan käsitellä yhteisen yliluokan olioina. Se tarjoaa koodille joustavuutta ja uudelleenkäytettävyyttä.
Tässä oppitunnissa opitte toteuttamaan polymorfismia Pythonissa metodien ja luokkien avulla.

Mitä polymorfismi tarkoittaa?
Polymorfismin ansiosta eri luokkien metodeilla voi olla sama nimi, vaikka ne toimivat eri tavoin. Se tekee koodista joustavampaa ja helpommin laajennettavaa.
# Defining a superclass
class Animal:
# Method in the superclass
def speak(self):
print("Animal speaks") # Generic message for all animals
# Defining a subclass that overrides the speak method
class Dog(Animal):
def speak(self):
print("Dog barks") # Specific behavior for DogPolymorfismi metodeilla
Eri luokkien samannimiset metodit voivat sisältää erilaiset toteutukset.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsMetodipolymorfismin esimerkki
Polymorfismi metodeilla
Eri luokkien samannimiset metodit voivat sisältää erilaiset toteutukset.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsPolymorfismi funktioilla
Polymorfismin ansiosta sama funktio voi toimia erityyppisten olioiden kanssa.
# Defining two unrelated classes
class Bird:
def fly(self):
print("Bird flies") # Behavior specific to birds
class Plane:
def fly(self):
print("Plane flies") # Behavior specific to planes
# Function demonstrating polymorphism
# It can accept objects of both Bird and Plane
def flying_object(obj):
obj.fly() # Calls the appropriate fly method based on the object type
# Creating objects of Bird and Plane
bird = Bird()
plane = Plane()
# Calling the function with different objects
flying_object(bird) # Outputs: Bird flies
flying_object(plane) # Outputs: Plane fliesPolymorfismi perinnän avulla
Polymorfismi toteutetaan usein perinnän avulla, jolloin aliluokat ylikirjoittavat yliluokan metodeja.
# Superclass representing a generic vehicle
class Vehicle:
def start(self):
print("Vehicle starts") # Generic behavior for all vehicles
# Subclass representing a specific type of vehicle
class Car(Vehicle):
def start(self):
print("Car starts") # Specific behavior for cars
# Subclass representing another specific type of vehicle
class Bike(Vehicle):
def start(self):
print("Bike starts") # Specific behavior for bikes
# Function demonstrating polymorphism
# It can accept objects of any subclass of Vehicle
def start_vehicle(vehicle):
vehicle.start() # Calls the appropriate start method based on the object type
# Creating objects of Car and Bike
car = Car()
bike = Bike()
# Calling the function with different objects
start_vehicle(car) # Outputs: Car starts
start_vehicle(bike) # Outputs: Bike startsPolymorfismin edut
Polymorfismista on useita hyötyjä:
- Koodin uudelleenkäytettävyys ja joustavuus.
- Koodin parempi luettavuus ja järjestelmällisyys.
- Yhteisten rajapintojen käytön edistäminen.
Tosielämän esimerkki
Seuraavassa on tosielämän esimerkki polymorfismin käytöstä.
# Real-world example of polymorphism
class Developer:
def work(self):
print("Writing code") # Specific task for developers
class Designer:
def work(self):
print("Designing user interfaces") # Specific task for designers
# Function demonstrating polymorphism
# It can accept objects of both Developer and Designer
def workday(employee):
employee.work() # Calls the appropriate work method based on the object type
# Creating objects of Developer and Designer
developer = Developer()
designer = Designer()
# Calling the function with different objects
workday(developer) # Outputs: Writing code
workday(designer) # Outputs: Designing user interfacesYleisiä virheitä polymorfismin käytössä
Tässä on virheitä, joita kannattaa välttää:
- Metodien ylikirjoittamisen unohtaminen aliluokissa tarvittaessa.
- Moniperinnän metodien ratkaisujärjestyksen (MRO) sekoittaminen.
- Polymorfismin tarpeeton käyttäminen yksinkertaisissa tehtävissä.
Mitä opimme?
Tässä oppitunnissa opitte:
- Mitä polymorfismi on ja kuinka se toimii Pythonissa.
- Kuinka polymorfismia toteutetaan metodeilla ja perinnän avulla.
- Polymorfismin käytön edut olio-ohjelmoinnissa.
Hienosti tehty! Siirrytään seuraavaan aiheeseen.

Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Monimuotoisuus” ilmainen?
Kyllä – oppitunnin ”Monimuotoisuus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 6 oppituntia.
Mitä opin oppitunnilla ”Monimuotoisuus”?
Tutustukaa siihen, miten monimuotoisuus mahdollistaa joustavan ja dynaamisen koodin. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/6.
Kuinka kauan ”Monimuotoisuus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Luokat ja oliot
- Attribuutit ja metodit
- Periytyminen
- Monimuotoisuus
- Kapselointi ja abstraktio
- Erikoismetodit (__str__, __repr__ jne.)