Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py /

20170511c

Magic methods

Alapverzió

Vegyünk egy téglalap osztályt:

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

    def area(self):
        return self.width * self.height

    def __str__(self):
        return "Rectangle({w}, {h})".format(w=self.width, h=self.height)

def main():
    r1 = Rectangle(0, 5)
    r2 = Rectangle(10, 20)
    print(r1)
    print(r2)

main()

Kibővített verzió

A fenti téglalap osztályt bővítsük ki egy kicsit: 1) egy téglalap objektum egy if feltételben számítson hamisnak, ha a területe 0, ill. 2) két téglalap obj. legyen összehasonlítható a < operátorral (legyen r1 < r2, ha r1 területe kisebb, mint r2 területe).

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

    def area(self):
        return self.width * self.height

    def __bool__(self):
        return self.area() > 0

    def __lt__(self, other):
        return self.area() < other.area()

    def __str__(self):
        return "Rectangle({w}, {h})".format(w=self.width, h=self.height)

def main():
    r1 = Rectangle(0, 5)
    r2 = Rectangle(10, 20)
    if r1:                             # r1.__bool__() will be called
        print("r1 is considered to be true (truthy)")
    else:
        print("r1 is considered to be false (falsy)")
    print("-" * 20)
    print(r1 < r2)                     # r1.__lt__(r2) will be called
    print(r2 < r1)

main()

Kimenet:

r1 is considered to be false (falsy)
--------------------
True
False

A magic metódusok segítségével könnyedén megvalósítható az operátor túlterhelés (operator overloading).

Linkek

Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2023 November 08, 21:31