[Python] ν΄λμ€(class)λ?
μ©μ΄μ κ°λ
classλ?
ν΄λμ€ = κ°μ²΄λ₯Ό νννκΈ° μν λ¬Έλ²
νλ‘κ·Έλλ°μΌλ‘ κ°μ²΄*λ₯Ό λ§λ€ λμ μ¬μ©νλ κ²μ΄ ν΄λμ€μ΄λ€. ν΄λμ€λ ν¬κ² μμ±κ³Ό λ©μλλ‘ κ΅¬λΆλλ€.
- attribute (μμ±) : λ§€κ°λ³μλ₯Ό λ°κ³ μ¬μ©νκΈ° μν κ°
- method (λ©μλ) : λ§λ€μ΄μ§ μμ±λ€μ μ΄μ©νμ¬ μ΄λ€ νμλ₯Ό νλ μ€νμ½λ. μ¦, ν΄λμ€ μμ λ€μ΄μλ ν¨μ
classμ object
- Object (κ°μ²΄)* : 체ν¬λ°μ€, μ€ν¬λ‘€λ° λ± νΉμ ν κ°λ μ΄λ λͺ¨μμΌλ‘ μ‘΄μ¬νλ κ²
- OOL (Object Oriented Language, κ°μ²΄μ§ν₯μΈμ΄) : κ°μ²΄λ₯Ό μ¬μ©ν νλ‘κ·Έλλ° μΈμ΄
- OOP (Object Oriented Programming, κ°μ²΄μ§ν₯νλ‘κ·Έλλ°) : μ΄λ λ― λ³΅μ‘ν λ¬Έμ λ₯Ό μκ² λλμ΄ κ°μ²΄λ‘ λ§λ€κ³ , κ°μ²΄λ₯Ό μ‘°ν©ν΄μ λ¬Έμ λ₯Ό ν΄κ²°νλ νλ‘κ·Έλλ°
νμ€ μΈκ³μ 볡μ‘ν λ¬Έμ λ₯Ό μ²λ¦¬νλλ° μ μ©νλ©°, κΈ°λ₯μ κ°μ νκ³ λ°μ μν¬ λμλ ν΄λΉ ν΄λμ€λ§ μμ νλ©΄ λλ―λ‘ μ μ§ λ³΄μμλ ν¨μ¨μ μ΄λ€.
μ¬μ©νκΈ°
1. κΈ°μ΄ λ¬Έλ²
1-1. class μμ±νκΈ°
ν΄λμ€λ class ν΄λμ€μ΄λ¦ : λΌκ³ μμ±ν ν, λ€μ μ€λ‘ λμ΄κ° defλ‘ methodλ₯Ό μμ±ν¨μΌλ‘μ¨ μμ±ν μ μλ€.
class Person:
def greeting(self):
print('Hello')
1-2. class μ¬μ©νκΈ°
μΈμ€ν΄μ€ = ν΄λμ€()νμμ ν΅ν΄ ν΄λμ€λ₯Ό λ³μμ ν λΉν μ μλ€. μ¦ μλμ μ½λλ Personμ ν΅ν΄ λ³μ jamesλ₯Ό λ§λλ κ²μΈλ°, μ΄ jamesλ Personμ instance(μΈμ€ν΄μ€)μ΄λ€.
james = Person()
1-3. method νΈμΆνκΈ°
λ©μλλ ν΄λμ€κ° μλλΌ μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνλ€. λ€μκ³Ό κ°μ΄ μΈμ€ν΄μ€ λ€μ .μ λΆμ΄κ³ λ©μλλ₯Ό νΈμΆνλ©΄ λλ€.
james.greeting()
Hello
james.greetingμ νΈμΆνλ 'Hello'κ° μΆλ ₯λλ€. μ΄λ κ² μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνλ λ©μλλ₯Ό instance methodλΌκ³ νλ€. μ΄λ κ² μ¬λ ν΄λμ€λ₯Ό λ§λ€κ³ μΈμ¬νλ κΈ°λ₯μ λ£μ΄λ³΄μλ€.
μ¬μ€ κ°μ κ²μ μλ―Ένλ€. λ€λ§, κ°μ²΄λ§ μ§μ ν λλ κ·Έλ₯ κ°μ²΄(object)λΌκ³ λΆλ₯΄κ³ , ν΄λμ€μ μ°κ΄μ§μ΄ λ§ν λλ μΈμ€ν΄μ€(instance)μκ³ λΆλ₯΄λ κ²μ΄λ€.
2. νμ© λ¬Έλ²
2-1. λΉ class μμ±νκΈ°
λ΄μ©μ΄ μλ λΉ ν΄λμ€λ₯Ό λ§λ€ λλ μ½λ λΆλΆμ passλ₯Ό λ£μ΄μ€λ€.
class Person:
pass
2-2. method μμμ method νΈμΆνκΈ°
λ©μλ μμμ λ©μλλ₯Ό νΈμΆν λλ λ€μκ³Ό κ°μ΄ self.λ©μλ()νμμΌλ‘ νΈμΆν΄μΌ νλ€. μ¦, μ¬κΈ°μ self μμ΄ λ©μλ μ΄λ¦λ§ μ¬μ©νλ©΄ ν΄λμ€ λ°κΉ₯μͺ½μ μλ ν¨μλ₯Ό νΈμΆνλ€λ λ»μ΄ λλ―λ‘ μ£Όμν΄μΌ νλ€.
class Person:
def greeting(self):
print('Hello')
def hello(self):
self.greeting() # self.λ©μλ() νμμΌλ‘ ν΄λμ€ μμ λ©μλλ₯Ό νΈμΆ
james = Person()
james.hello() # Hello
2-3. νΉμ classμ instanceμΈμ§ νμΈνκΈ°
νμ¬ μΈμ€ν΄μ€κ° νΉμ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ νμΈν λλ isinstanceν¨μλ₯Ό μ¬μ©νλ€. νΉμ ν΄λμ€μ μΈμ€ν΄μ€κ° λ§μΌλ©΄ True, μλλ©΄ Falseλ₯Ό λ°ννλ€.
class Person:
pass
james = Person()
isinstance(james, Person) # -> True
ππ» isinstanceλ μ£Όλ‘ κ°μ²΄μ μλ£νμ νλ¨ν λ μ¬μ©νλ€. μλ₯Ό λ€μ΄ ν©ν λ¦¬μΌ ν¨μλ 1λΆν° nκΉμ§ μμ μ μλ₯Ό μ°¨λ‘λλ‘ κ³±ν΄μΌ νλλ°, μ€μμ μμ μ μλ κ³μ°ν μ μλ€. μ΄λ° κ²½μ°μ isinstanceλ₯Ό μ¬μ©νμ¬ μ«μ(κ°μ²΄)κ° μ μμΌ λλ§ κ³μ°νλλ‘ λ§λ€ μ μλ€.
def factorial(n):
if not isinstance(n, int) or n < 0: # nμ΄ μ μκ° μλκ±°λ μμμ΄λ©΄ ν¨μλ₯Ό λλ
return None
if n == 1:
return 1
return n * factorial(n - 1)
μ°Έκ³ μ¬μ΄νΈ
- μ½λ©λμ₯ (https://dojang.io/mod/page/view.php?id=2372)