Python OOP

Objektorienteeritud programmeerimine (OOP) on programmeerimisparadigma, mis põhineb objektide kasutamisel. Iga objekt on teatud klassi eksemplar ja võib sisaldada andmeid (atribuute) ja funktsioone (meetodeid), mis neid töötlevad.

OOP põhiprintsiibid

  1. klassid
  2. objektid
  3. pärimine
  4. kapseldamine
  5. polümorfism.

Klassid ja objektid

Klass on mall, mis määratleb objektide struktuuri. See sisaldab andmeid (atribuute) ja tegevusi (meetodeid), mida saab nende andmete suhtes teostada.

Objekt on klassi konkreetne eksemplar. See pärib klassi omadused, kuid selle andmed võivad olla erinevad.

Näida:

class Product:
    def __init__(self, name, price, id):
        self.name = name
        self.price = price
        self.id = id

    def __eq__(self, other):
        return isinstance(other, Product) and other.id == self.id

__init__ on konstruktor, mis määrab objekti algse oleku.

self kasutatakse objekti atribuutidele ligipääsemiseks.

Meetod __eq__ võimaldab objektide võrdlemist nende identifikaatori järgi.

Pärimine

class Shop:
    def __init__(self, name):
        self.name = name
        self.products = {}
        self.product_counts = {}

    def add_product(self, product: Product, count=1) -> bool:
        if product.id in self.products:
            self.product_counts[product.id] += count
        else:
            self.products[product.id] = product
            self.product_counts[product.id] = count
        return True

Shop sisaldab kaupadega töötamise meetodeid ja selle objektid saavad hallata kaupade varusid.

Polümorfism

class Cart:
    def __init__(self, shop: Shop):
        self.products = {}
        self.shop = shop

    def add_product(self, product: Product, count=1) -> int:
        count_in_store = self.shop.get_product_count(product)
        if count_in_store < count:
            count = count_in_store
        self.shop.move_to_cart(product, count)
        self.products[product.id] = self.products.get(product.id, 0) + count
        return count

add_product teostab eseme lisamise ostukorvi ja selle käitumine sõltub eseme olemasolust poes.

Kood : Github