Initiation à la programmation ENSAE 1A

seance5_classe_method.tex

classe Point


class Point :
    def __init__ (self, x,y) :
        self.x = x
        self.y = y

instance Point


p = Point (4,5)

self ou moi


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
				
p1 = Point(4,5)  # moi désigne p1 ici
p2 = Point(6,7)  # moi désigne p2 ici

print point


print (p1)
# affiche <__main__.Point object at 0x0288E470>

print x,y


print (p1.x, p1.y)

__str__


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
    def __str__(moi):
        return "point: ({0},{1})".format(moi.x, moi.y)
p = Point(4,5)
print (p)  # affiche point: (4,5)

addition avec __add__


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
    def __str__(moi):
        return "{0},{1}".format(moi.x, moi.y)
    def __add__(moi, autre_point) :
        return Point(moi.x + autre_point.x, moi.y + autre_point.y) 
p = Point(4,5)
print (p + p)   # affiche 8,10

classe CarreMagique


class CarreMagique :
    def __init__(self, ...) :
        ....
    def __str__(self) :
        ....
    def __add__(self) :
        ....

méthode norm


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
    def norm(moi) :
        return (moi.x**2 + moi.y**2) ** 0.5
p = Point(4,5)
print (p.norm())

méthode norm


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
    def norm(moi, lx = 2) :
        return (abs(moi.x)**lx + abs(moi.y)**lx) ** (1.0 / lx)
print (p.norm(1))
print (p.norm(2))
print (p.norm(3))
print (p.norm(100))

appel d'une méthode depuis une autre méthode


class Point :
    def __init__ (moi, x,y) :
        moi.x = x
        moi.y = y
    def norm(moi, lx = 2) :
        if lx == 0 : return moi.est_nul()
        else : return (abs(moi.x)**lx + abs(moi.y)**lx) ** (1.0 / lx)
    def est_nul(moi):
        return  moi.x == 0 and moi.y == 0