Python Academy · Oppitunti

Monimuotoisuus

Tutustukaa siihen, miten monimuotoisuus mahdollistaa joustavan ja dynaamisen koodin.

Oppitunti 4/612 vaihetta

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.

Monimuotoisuus — kuvitus 1

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 Dog

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 meows

Metodipolymorfismin 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 meows

Polymorfismi 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 flies

Polymorfismi 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 starts

Polymorfismin 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 interfaces

Yleisiä virheitä polymorfismin käytössä

Tässä on virheitä, joita kannattaa välttää:

  • Metodien ylikirjoittamisen unohtaminen aliluokissa tarvittaessa.
  • Moniperinnän metodien ratkaisu­jä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.

Monimuotoisuus — kuvitus 12
Aloita maksutta

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

  1. Luokat ja oliot
  2. Attribuutit ja metodit
  3. Periytyminen
  4. Monimuotoisuus
  5. Kapselointi ja abstraktio
  6. Erikoismetodit (__str__, __repr__ jne.)
← Takaisin: Python Academy