μƒˆμ†Œμ‹

Languages/Python

[Python] μ—°μ‚°μž μ˜€λ²„λ‘œλ”©, 비ꡐ μ—°μ‚°μž

  • -
λ°˜μ‘ν˜•

직접 μ •μ˜ν•œ 클래슀의 객체에

 

•  +, - * 와 같은 일반 μ—°μ‚°μžλ₯Ό μ μš©ν•˜λ €λ©΄ , 객체λ₯Ό μ—°μ‚° κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ§Œλ“€μ–΄μ•Ό 함

 

• μ—°μ‚°μž μ˜€λ²„λ‘œλ”©μ„ 톡해 이λ₯Ό κ΅¬ν˜„

 

 

μ—°μ‚°μž μ˜€λ²„λ‘œλ”©

 

• μΈμŠ€ν„΄μŠ€ 객체끼리 μ„œλ‘œ 연산을 ν•  수 있게 기쑴에 μžˆλŠ” μ—°μ‚°μž 의 κΈ°λŠ₯을 λ°”κΎΈμ–΄ μ€‘λ³΅μœΌλ‘œ μ •μ˜ν•˜λŠ” 것

 

νŒŒμ΄μ¬μ—μ„œλŠ” νŠΉμ • μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ν•˜λ©΄ μ—°μ‚° 자 μ€‘λ³΅μ •μ˜ κ΅¬ν˜„

 

 

 

예제 1) 

#μ—°μ‚°μž μ˜€λ²„λ‘œλ”© 예제 1
class NumBox:
    def __init__(self,num):
        self.num = num

    def __add__(self, num):
        self.num += num

    def __sub__(self, num):
        self.num -= num

n = NumBox(40)
n + 100 # n+100 == n.__add__
print(n.num)

n-100
print(n.num)

 

예제 2) 

#μ—°μ‚°μž μ˜€λ²„λ‘œλ”© 2
#self : 객체 μžμ‹ 
# other : λ”ν•˜κ³ μž ν•˜λŠ” κ°’

class Number:
    def __init__(self,n):
        self.n = n
n1 = Number(3)
n2 = Number(4)

### μœ„λŠ” μ—λŸ¬λ‚˜λŠ” μ „μ½”λ“œ, μ•„λž˜λŠ” λ³€κ²½ μ½”λ“œ ###
class Number:
    def __init__(self,n):
        self.n = n

    def __add__(self, other):
        if isinstance(other, Number):
            return Number(self.n +other.n)
        elif isinstance(other, int):
            return Number(self.n + other)


n1 = Number(3)
n2 = Number(4)

print(n1+n2)
# <__main__.Number object at 0x03248040>
print((n1+n2).n)

print(n1 + 3)
# <__main__.Number object at 0x03248058>
print((n1 + 3).n)

 

비ꡐ μ—°μ‚°μž μ˜€λ²„λ‘œλ”© λ©”μ†Œλ“œ

 

비ꡐ μ—°μ‚°μž μ˜€λ²„λ‘œλ”© μ˜ˆμ‹œ)

class Number:
    def __init__(self,n):
        self.n = n

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

    def __le__(self, other):
        return self.n <= other.n

    def __gt__(self, other):
        return self.n > other.n

    def __ge__(self, other):
        return self.n <= other.n

    def __eq__(self, other):
        return self.n == other.n
n1 = Number(3)
n2 = Number(4)

print('n1 < n2 : {}'.format(n1<n2))
print('n1 <= n2 : {}'.format(n1<=n2))
print('n1 > n2 : {}'.format(n1>n2))
print('n1 <= n2 : {}'.format(n1<=n2))
print('n1 == n2 : {}'.format(n1==n2))
λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.