λ°μ½λ μ΄ν°(@)
μ΄μνκ³ λ°λ³΅μ μΈ ν¨μμ ννμ μ€μ΄κΈ° μν΄ μ μ
ν¨μ μΈμλ ν΄λμ€, μ λλ μ΄ν° λ± λ€μν νμ
μμλ μ¬μ©
λ°μ½λ μ΄ν° -> λ§ κ·Έλλ‘ ν¨μλ₯Ό 'κΎΈλ©°μ£Όλ' νΉμ 'μ₯μνλ', 'ν¬μ₯νλ' κΈ°λ₯
ν¨μμ λ°μ½λ μ΄ν°(@)
μμλΆν° λ³΄κ² μ΅λλ€.
def one():
print("Hello")
print("oneμ΄λΌλ ν¨μ")
def two():
print("Hello")
print("twoλΌλ ν¨μ")
def three():
print("Hello")
print("threeλΌλ ν¨μ")
μμ μμλ μμ£Ό κ°λ¨νκΈ°μ κ°μ΄ μμ¬ μ μμ§λ§, 곡ν΅μ μΌλ‘ λ€μ΄κ° print("Hello")
λ₯Ό νλ²μ λ¬Άμ΄μ μΈ μ μμ΅λλ€.
def Hello_deco(func): # funcλ μ€νν ν¨μ
def Hello(): # μ€νν ν¨μλ₯Ό κ°μΈλ(wrap) ν¨μ
print("Hello")
func()
return Hello # Hello ν¨μλ₯Ό 리ν΄
@Hello_deco
def one():
print("oneμ΄λΌλ ν¨μ")
@Hello_deco
def two():
print("twoλΌλ ν¨μ")
@Hello_deco
def three():
print("threeλΌλ ν¨μ")
μμ κ°μ΄ μ¬μ©ν μ μμ΅λλ€. (μ§κΈμ 짧μ§λ§, μ½λκ° ν¨μ¬ κΈΈμ΄μ‘λ€κ³ κ°μ νλ©΄ λ°μ½λ μ΄ν°μ νΈλ¦¬ν¨μ λλ μ μμ΅λλ€!)
Hello_deco(one())
# Hello
# oneμ΄λΌλ ν¨μ
λ°μ½λ μ΄ν° μ¬μ©νλ μ΄μ
DRY(Don't Repeat Yourself)
νμ΄μ¬ κ°λ°μλ€μ΄ μ§ν€λ €νλ μμΉ μ€ μ½λμ λ°λ³΅ μ¬μ©μ μ€μ΄κΈ° μν DRY μμΉ
μ΄ μμΉμ μ§ν€κΈ° μν΄ νμ΄μ¬ κ°λ°μλ€μ μμ, λμ€ν¬λ¦½ν°, μ λλ μ΄ν° λ± λ€μν κΈ°μ μ μ¬μ©
νΉν λ°μ½λ μ΄ν°λ μκ°μ μΌλ‘ λ€λ₯Έ κΈ°μ λ€λ³΄λ€ κΉλνκ³ κ°κ²°ν μ½λλ₯Ό λ§λ€μ΄μ£ΌκΈ°μ λ§μ΄ μΆμ²λ¨
μ€μ μ΄λ€ νλ‘κ·Έλλ°μ νλ κ²½μ°κ° μλλΌλ©΄ μ μ¬μ©μνλλΌλ ν¨ν€μ§λ₯Ό μ΄μ©ν λ μμ£Ό μ ν μ μμ΅λλ€.
@property λ°μ½λ μ΄ν°
μμ)
class test:
def __init__(self, first, last):
self.first = first
self.last = last
self.full = first + ' ' + last
name = test('Jay', 'Lee')
print(name.first) #-> 'Jay' μΆλ ₯
print(name.last) #-> 'Lee' μΆλ ₯
print(name.full) #-> 'Jay Lee' μΆλ ₯
name.last = 'Den'
print(name.last) #-> 'Den' μΆλ ₯
print(name.full) #-> 'Jay Lee' μΆλ ₯
μμ κ²½μ°, name.last
λ₯Ό λ°κΏμ£Όμ΄λ μ΄λ―Έ classλ₯Ό μ μΈν λ, Jay
μ Lee
λ₯Ό λ°κΈ° λλ¬Έμ name.full
μ νλ¦°νΈν΄λ Den
μ΄ λ°μλ κ°μ΄ μλ, κ·Έλλ‘ Jay Lee
κ° μΆλ ₯λ©λλ€. μ΄λ₯Ό λ°μν΄μ£ΌκΈ° μν΄ μλμ κ°μ΄ μ½λλ₯Ό λ³κ²½ν©λλ€.
class test_1:
def __init__(self, first, last):
self.first = first
self.last = last
def full(self):
return self.first + ' ' + self.last
name = test_1('Jay', 'Lee')
μμ κ°μ΄ full()μ λν ν¨μλ₯Ό λ°λ‘ μ μνμ¬ λ°μν΄μ€ μ μμ΅λλ€.
λ€λ§, μ΄ λλ name.full()
λ‘ νΈμΆνμ¬ λ©μλνμμ μ·¨ν΄μΌν©λλ€. μ΄λ₯Ό νΉμ± ννλ‘ λ°κΎΈκΈ° μν΄ property λ°μ½λ μ΄ν°κ° μ¬μ©λ©λλ€.
class test_1:
def __init__(self, first, last):
self.first = first
self.last = last
@property
def full(self):
return self.first + ' ' + self.last
name = test_1('Jay', 'Lee')
μμ κ°μ κ²½μ°μ, name.full
λ‘ νΈμΆνλ©΄ κ°μ΄ 리ν΄λ©λλ€.
getter, setter λ°μ½λ μ΄ν°
μμ propertyκ° getter(κ°μ Έμ¬ λ μ¬μ©νλ λ°μ½λ μ΄ν°)μ μν μ νμΌλ―λ‘ setter(κ°μ μ€μ ν΄μ£Όλ λ°μ½λ μ΄ν°)λ₯Ό μμλ³΄κ² μ΅λλ€.
class test_1:
def __init__(self, first, last):
self.first = first
self.last = last
@property
def full(self):
return self.first + ' ' + self.last
@full.setter
def full(self, new_full):
first, last = new_full.split()
self.first = first
self.last = last
name1 = test_1('Jay', 'Lee')
print(name1.first) #-> 'Jay' μΆλ ₯
print(name1.last) #-> 'Lee' μΆλ ₯
print(name1.full) #-> 'Jay Lee' μΆλ ₯
name1.full = 'Hyo Lee' #-> name1.fullμ 'Hye Lee'μ μ§μ νκ² λλ©΄
print(name1.first) #-> 'Hyo' μΆλ ₯
print(name1.last) #-> 'Lee' μΆλ ₯
μμ κ°μ΄, μ΄λ²μ full
μ λ³κ²½νμμ λ, first
λ° last
κ°μ΄ λ³κ²½λλ κ²μ νμΈν μ μμ΅λλ€.
'πΏ Data > μ΄λͺ¨μ λͺ¨' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
if __name__ == '__main__' : μ κ°λ (0) | 2022.01.30 |
---|---|
__init.py__μ νμ© (0) | 2022.01.28 |
SQL_Tips('νΌμ 곡λΆνλ SQL_~Chapter3) (0) | 2022.01.25 |
SQLite_Select_rowid (0) | 2022.01.23 |
SQLite_sqlite3, PostgreSQL_psycopg2 (0) | 2022.01.22 |