Python 3/Luokka

Wikikirjastosta
Siirry navigaatioon Siirry hakuun

Koodi[muokkaa | muokkaa wikitekstiä]

Koodi, jossa on kaksi luokkaa. Ei ole niin monimutkainen kuin miltä näyttää.

class Square:
    def __init__(self, width, height):
        self.width, self.height = width, height # voi tehdä samalla rivillä

    def draw(self, char):
        for i in range(self.height):
            print (self.width * char)

class Triangle:
    def __init__(self, side):
        self.side = side
        
    def draw(self, char):
        width = self.side
        for i in range(self.side):
            width -= 1
            indentation = self.side - width # indentation on kolmion kavennus
            print (indentation * ' ' + width * char * 2)

Kutsuminen[muokkaa | muokkaa wikitekstiä]

1. suoraan

Square(20, 10).draw('O')
Triangle(10).draw('X')

2. olion, ilmentymän (engl. instance) avulla

sq = Square(20, 10)
sq.draw('O')
tr = Triangle(10)
tr.draw('X')

Tulostaa: Neliön ja sen perään kolmion.

OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
 XXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXX
   XXXXXXXXXXXXXX
    XXXXXXXXXXXX
     XXXXXXXXXX
      XXXXXXXX
       XXXXXX
        XXXX
         XX

Ohjeteksti[muokkaa | muokkaa wikitekstiä]

Luokalle, samoin kuin funktioille ja moduuleille, voi kirjoittaa ohjetekstin yksittäisenä merkkijonona välittömästi luokan sisälle.

class Square:
    """Luokka neliöiden tulostamiseen.

    Parametrit:
      width: neliön leveys
      height: neliön korkeus
    """

    def __init__(self, width, height):
        self.width, self.height = width, height

    def draw(self, char):
        """Piirtää neliön annetulla merkillä.

        Parametrit:
          char: merkki, jolla neliö tulostetaan
        """
        for i in range(self.height):
            print (self.width * char)

Ohjetekstiin pääsee käsiksi help-komennolla komentotulkistaa, pydoc-työkalulla ja luokan jäsenestä __doc__. Tässä oletetaan, että koodi tallennettiin tiedostoon nimeltä shapes.py.

>>> help(shapes.Square)

Tulostaa

Help on class Square in module shapes:

class Square(builtins.object)
 |  Square(width, height)
 |  
 |  Luokka neliöiden tulostamiseen.
 |  
 |  Parametrit:
 |    width: neliön leveys
 |    height: neliön korkeus
 |  
 |  Methods defined here:
 |  
 |  __init__(self, width, height)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  draw(self, char)
 |      Piirtää neliön annetulla merkillä.
 |      
 |      Parametrit:
 |        char: merkki, jolla neliö tulostetaan
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

Ohjetekstien muotoiluun on monia erilaisia käytäntöjä.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]