λ³Έ ν¬μ€ν μ νκ΅ μμ μμ λ€λ£¬ νμ΄μ¬ λ¬Έλ² λΆλΆμ μ 리ν΄λκ³ μ λ¨κΈ°λ ν¬μ€ν μ΄λ€.
(ν΄λΉ μμ μ 'νμ΄μ¬ λμ₯'κ³Ό 'μ ν ν¬ νμ΄μ¬'μ κ΅μ¬λ‘ λ¬Έλ² μμ μ μ§ν)

ν΄λμ€
- ν΄λμ€λ κ°μ²΄λ₯Ό νννκΈ° μν λ¬Έλ²
- κ°μ²΄μ§ν₯μ κΈ°λ³Έμ μΈ κ°λ
볡μ‘ν λ¬Έμ λ₯Ό μκ² λλμ΄ κ°μ²΄λ‘ λ§λ€κ³ , κ°μ²΄λ₯Ό μ‘°ν©ν΄μ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©μ
νμ€ μΈκ³ λ¬Έμ λ₯Ό μ²λ¦¬νλλ° μ μ©νλ©° κΈ°λ₯μ κ°μ νκ³ λ°μ μν¬ λλ ν΄λΉ ν΄λμ€λ§ μμ νλ©΄ λκΈ° λλ¬Έμ μ μ§ λ³΄μμ ν¨μ¨μ μ΄λ€. - λͺ μ¬ν ν μ μλ λ°μ΄ν°λ₯Ό ν΄λμ€μ μμ±, κΈ°λ₯(ν΄λμ€λ₯Ό μ μ΄νλ λμ)μ λ©μλ λΌκ³ λΆλ₯Έλ€.
classλ‘ ν΄λμ€ μ΄λ¦μ μ§μ νκ³ :(μ½λ‘ )μ λΆμΈ λ€ λ€μ μ€λΆν° defλ‘ λ©μλλ₯Ό μμ±νλ©΄ λλ€
- νμ΄μ¬μ ν΄λμ€λ λλ¬Έμλ‘ μμνκ³ λ©μλ μμ± λ°©λ²μ ν¨μμ κ°μΌλ©° μ½λλ λ°λμ λ€μ¬μ°κΈ° ν΄μΌνλ€.
- λ©μλμ 첫 λ²μ§Έ λ§€κ°λ³μλ λ°λμ
selfλ₯Ό μ§μ ν΄μΌ νλ€. class ν΄λμ€ μ΄λ¦: def λ©μλ(self): μ½λ
ν΄λμ€λ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±νλ©΄ ν΄λΉ κ°μ²΄λ₯Ό μΈμ€ν΄μ€λΌκ³ λΆλ₯Έλ€.μΈμ€ν΄μ€ = ν΄λμ€()
ν΄λμ€λ νΉμ κ°λ
μ ννλ§ ν λΏ μ€μ μ¬μ©μ νκΈ° μν΄μλ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌ νλ€.
λ©μλλ ν΄λμ€κ° μλλΌ μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνκ³ μ΄λ κ² μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνλ λ©μλλ₯Ό μΈμ€ν΄μ€ λ©μλλΌκ³ λΆλ₯Έλ€.
νμ΄μ¬μ ν΄λμ€
μμ λ€λ£¨μλ int, list, dict λ±λ ν΄λμ€μ΄λ€.
μ΄ ν΄λμ€λ‘ μΈμ€ν΄μ€λ₯Ό λ§λ€κ³ λ©μλλ₯Ό μ¬μ©νλ€.
νμ΄μ¬μ λͺ¨λ κ² κ°μ²΄(μΈμ€ν΄μ€)λ‘ λμ΄μλ€κ³ λ³Ό μ μλ€.
a = 10
type(a) # <class 'int'>
b = [0, 1, 2]
type(b) # <class 'list'>
c = {'x':10, 'y':20}
type(c) # <class 'dict'>
[[리μ€νΈ&νν μμ©]]μμ μ¬μ©ν λ©μλλ€ λν, μΈμ€ν΄μ€μΈ 리μ€νΈ aμμ λ©μλ appendλ₯Ό νΈμΆν΄μ κ°μ μΆκ°νλ κ³Όμ μ²λΌ ν΄λμ€ κ΄μ μΌλ‘ ν΄μ κ°λ₯νλ€.
μμ± μ¬μ©νκΈ°
νμ΄μ¬μμ μμ±μ λ§λ€ λλ __init__ λ©μλ μμμ self.μμ±μ κ°μ ν λΉν΄μΌ νλ€.
class ν΄λμ€ μ΄λ¦:
def __init__(self):
self.μμ± = κ°
init λ©μλλ μμ±μ μν μ νμ¬, ν΄λμ€λ₯Ό ν΅ν΄ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ νΈμΆ λλ νΉλ³ν λ©μλμ΄λ€.
μ΄λ¦λλ‘, μΈμ€ν΄μ€(κ°μ²΄)λ₯Ό μ΄κΈ°ν νλ€. μ€νμ
λ©μλ νΉμ λ§€μ§ λ©μλ λΌκ³ λΆλ₯Έλ€.
selfμ μλ―Έ
μ²μ μμ±ν λ λΏ μλλΌ ν΄λμ€ μμμ μμ±μ μ¬μ©ν λλ self.hello μ²λΌ selfμ μ μ λΆμ¬ μ¬μ©νλ©΄ λλ€.
selfλ μΈμ€ν΄μ€ μκΈ° μμ μ μλ―Ένλ€.
μΈμ€ν΄μ€ = ν΄λμ€(self) μμ μ²λΌ ν΄λμ€λ₯Ό νΈμΆνλ©΄ μΈμ€ν΄μ€κ° μλμΌλ‘ λ§€κ°λ³μ selfμ λ€μ΄μ¨λ€.
μΈμ€ν΄μ€ λ§λ€ λ κ° λ°κΈ°
init μμ μ¬μ©μμκ² selfμ κ°μ λ°μΌλ €λ©΄ λ§€κ°λ³μλ₯Ό ν΅ν΄ μ§μ κ°λ₯νλ€.
class ν΄λμ€ μ΄λ¦:
def __init__(self, λ§€κ°λ³μ1, λ§€κ°λ³μ2):
self.μμ±1 = λ§€κ°λ³μ1
self.μμ±2 = λ§€κ°λ³μ2
λμ μ΄λ κ² λ§€κ°λ³μλ₯Ό μ€μ νκ³ λλ©΄, κ°μ²΄λ₯Ό μμ±ν λ λ°λμ λ§€κ°λ³μμ κ°μ μ±μμ€μΌ νλ€.
print('{0} μ λ {1}μ
λλ€.'.format(self.hello, self.name)) μμ {0}, {1}μ formatμ λ§€κ°λ³μ κ°λ€μ΄ μ¬ μ μλ€.
λΉκ³΅κ° μμ± μ¬μ©
ν΄λμ€ μμμλ§ μ¬μ©νκ³ μΈλΆμμλ μ¬μ©ν μ μλλ‘ νλ private ν μμ±μ λ§λ€ λλ μμ λ°μ€ λκ°λ₯Ό λΆμ¬μ μμ±μ λ§λ€λ©΄ λλ€.
class ν΄λμ€μ΄λ¦:
def __init__(self, λ§€κ°λ³μ):
self.__μμ± = κ°
ν΄λμ€ μμ±
μ§κΈκΉμ§ λ€λ£¬ λ΄μ©μ ν΄λμ€λ‘ λ§λ€μ΄ λ΄λ μΈμ€ν΄μ€μ μμ±κ³Ό λ©μλμλ€.
μ¬κΈ°μ μΈμ€ν΄μ€κ° μλλΌ ν΄λμ€ μ체μ μμ±μ λ§λ€ μλ μλ€.
def ν΄λμ€ μ΄λ¦:
μμ± = κ°
λͺ¨λ μΈμ€ν΄μ€μμ 곡ν΅μ μΌλ‘ μ¬μ©νλ κ³΅μ© λ°μ΄ν°λ₯Ό λ§λ€ λ μ¬μ©νλ λ°©λ²μ΄λ€.
μ¦ ν΄λμ€ μμ±μ ν΄λμ€μ μν΄ μμΌλ©΄μ λͺ¨λ μΈμ€ν΄μ€μμ 곡μ λλ€.
μΈμ€ν΄μ€ μ μ²΄κ° μ¬μ©ν΄μΌ νλ κ°μ ν΄λμ€ μμ±μ, κ° μΈμ€ν΄μ€κ° κ°μ λ°λ‘ μ μ₯ν΄μΌ ν λλ μΈμ€ν΄μ€ μμ±μ μ μ₯νλ©΄ λλ€.
(ν μΈμ΄μμ μ€νν± λ³μμ κ°μ κ°λ
)
selfλ‘λ ν΄λμ€ μμ±μ μ κ·Όμ κ°λ₯νμ§λ§, ν΄λμ€ μ΄λ¦μ ν΅ν΄ μ κ·Όνλ κ²μ΄ λ λͺ νν μ½λκ° λλ€.
class Person:
species = 'human' # ν΄λμ€ μμ±
def __init__(self, name):
self.name = name # μΈμ€ν΄μ€ μμ±
p1 = Person('νκΈΈλ')
p2 = Person('κΉμ² μ')
print(p1.species, p2.species) # human human
Person.species = 'homo sapiens'
print(p1.species, p2.species) # homo sapiens homo sapiens
print(p1.name, p2.name) # νκΈΈλ κΉμ² μ
κ°μ μ¬λ¬ μ¬λμ΄ κ³΅μ νλ €λ©΄ ν΄λμ€ μμ±, 곡μ νμ§ μμΌλ €λ©΄ μΈμ€ν΄μ€ μμ±μ μ¬μ©νλ©΄ λλ€.
μμ λ€λ£¨μλ λλ‘, μΈμ€ν΄μ€ μμ±μ μΈμ€ν΄μ€λ³λ‘ λ
립λμ΄ μκΈ° λλ¬Έμ μλ‘ μν₯μ μ£Όμ§ μλλ€.
μμ±μ μ°Ύμ λμλ, μΈμ€ν΄μ€μ μμ±μ΄ μλμ§λ₯Ό λ¨Όμ 체ν¬ν λ€μ ν΄λμ€μ μμ±μ΄ μλμ§ μ²΄ν¬νλ€.
λΉκ³΅κ° ν΄λμ€ μμ±
λ§μ°¬κ°μ§λ‘ λΉκ³΅κ°λ‘ ν΄λμ€ μμ±μ λ§λλ €λ©΄ μμ λ°μ€ λκ°λ₯Ό λΆμ¬μ£Όλ©΄ λλ€.
μ μ λ©μλ
- λ©μλ μμ
@staticmethodλ₯Ό λΆμ΄λ©΄ μ μ λ©μλκ° λλ€.- μ΄λ κ² @μ΄ λΆμ κ²μ λ°μ½λ μ΄ν° λΌκ³ νλ€. λ©μλμ μΆκ° κΈ°λ₯μ ꡬνν λ μ¬μ©λλ€.
- μ μ λ©μλλ λ§€κ°λ³μμ selfλ₯Ό μ§μ νμ§ μλλ€(λ§€κ°λ³μλ§ μ¬μ©)
- μΈμ€ν΄μ€λ₯Ό λ§λ€μ§ μκ³ λ©μλλ₯Ό μ¬μ©νκ³ μΆμλ μ€νν± λ©μλ μμ±
ν΄λμ€ λ©μλ
- λ©μλ μμ
@classmethodλ₯Ό λΆμ¬ μ¬μ© - 첫λ²μ§Έ λ§€κ° λ³μμ clsλ₯Ό μ§μ ν΄λμ€ λ©μλλ μ μ λ©μλμ μ μ¬νλ°, λ΄λΆμ μΌλ‘ μ체μ μΈ μΈμ€ν΄μ€λ₯Ό μΆκ°ν μ μλ νΉμ±μ΄ μλ€.
@classmethod def class(cls): p = cls() return pclass ν΄λμ€ μ΄λ¦: @classmethod def λ©μλ(cls, λ§€κ°λ³μ1, λ§€κ°λ³μ2): μ½λ
ν΄λμ€ μμ
ν΄λμ€ μμμ λ¬Όλ €λ°μ κΈ°λ₯μ μ μ§ν μ± λ€λ₯Έ κΈ°λ₯μ μΆκ°ν λ μ¬μ©νλ κΈ°λ₯
- κΈ°λ₯μ λ¬Όλ €μ£Όλ ν΄λμ€λ₯Ό κΈ°λ° ν΄λμ€(base class)
- λΆλͺ¨ ν΄λμ€, μνΌ ν΄λμ€ λΌκ³ λΆλ¦
- μμμ λ°μ μλ‘κ² λ§λλ ν΄λμ€λ₯Ό νμ ν΄λμ€(derived class)λΌκ³ νλ€.
- μμ ν΄λμ€, μλΈ ν΄λμ€ λΌκ³ λΆλ¦
class κΈ°λ°ν΄λμ€μ΄λ¦: μ½λ
class νμν΄λμ€μ΄λ¦(κΈ°λ°ν΄λμ€μ΄λ¦):
μ½λ
μ κ°μ νμμΌλ‘ μ¬μ©ν μ μλ€.
- μμμ νλ©΄ ν μλ‘ κΈ°λ₯μ΄ λ§μμ§λ€.
- κΈ°λ° ν΄λμ€μ
__init__λ©μλλ₯Ό νΈμΆνμ§ μμΌλ©΄ μ¬μ©ν μ μκΈ° λλ¬Έμsuper()λ₯Ό μ¨μ νΈμΆν΄μ£Όμ΄μΌ νλ€.- νμ ν΄λμ€μμ
__init__μ μμ μλ΅ν΄λ²λ¦¬λ©΄, κΈ°λ° ν΄λμ€μ λ©μλλ₯Ό μλμΌλ‘ ν루νλ―λ‘super()λ₯Ό μ¬μ©νμ§ μμλ λλ€.
- νμ ν΄λμ€μμ
λ©μλ μ€λ²λΌμ΄λ©
- κΈ°λ°, νμ ν΄λμ€ λͺ¨λμ κ°μ μ΄λ¦μ λ©μλκ° μλ κ²½μ° λ³΄ν΅ μμ μ΄ λ§λ (νμ) λ©μλλ₯Ό μ¬μ©νλ€.
- λ§μ½ κΈ°λ° ν΄λμ€μ λ©μλλ₯Ό μ°κ³ μΆμΌλ©΄
super().λ©μλ()λ‘ μ€ννλ©΄ λλ€.
- λ§μ½ κΈ°λ° ν΄λμ€μ λ©μλλ₯Ό μ°κ³ μΆμΌλ©΄
λ€μ€ μμ

- νμν΄λμ€μ λ§€κ°λ³μλ‘ κΈ°λ° ν΄λμ€ μ¬λ¬κ°λ₯Ό λ£μΌλ©΄, μ¬λ¬ ν΄λμ€λ‘λΆν° μμμ λ°μ μ μλ€.
λ€μ΄μλͺ¬λ μμ

- Aλ₯Ό μμλ°μ B,Cλ₯Ό λ€μ€μμμ¬λ Dκ° μλ κ²½μ° λ€μ΄μλͺ¬λ μμ μ΄λΌκ³ νλ€.
- μ΄λ° λͺ ννμ§ μκ³ μ λ§€ν μνλ μ’μ§ μλ€.
- μ΄ κ²½μ° μ€λ³΅λλ λ©μλκ° λͺ¨λ μμΌλ©΄ κ°μ₯ κ°κΉμ΄ μμμ λ©μλλ₯Ό νΈμΆνλ€.
λ©μλ νμ μμ νμΈ
- λ€μ΄μλͺ¬λ μμμ λν ν΄κ²°μ± μΌλ‘ νμ΄μ¬μμλ λ©μλ νμ μμ(Method Resolution, MRO)λ₯Ό λ°λ₯Έλ€.
D.mro() # [<class '__main__.D'>, <class '__main__.B'>, ...]
μΆμν΄λμ€
- λ©μλμ λͺ©λ‘λ§ κ°μ§ ν΄λμ€μ΄λ©° μμλ°λ ν΄λμ€μμ λ©μλ ꡬνμ κ°μ νκΈ° μν΄ μ¬μ©νλ€
- μ¦, λ©μλμ λ΄μ©μ΄ μλ€
@abstractmethodλ₯Ό ν΅ν΄ μΆμ ν΄λμ€μ μΆμ λ©μλλ₯Ό ꡬννλ©΄ λλ€.
from abc import *
class μΆμν΄λμ€μ΄λ¦(metaclass=ABCMeta):
@abstractmethod
def λ©μλμ΄λ¦(self): # μΆμ λ©μλ
μ½λ
- μΆμν΄λμ€λ₯Ό μμλ°μ κ²½μ° μΆμ λ©μλλ₯Ό λͺ¨λ ꡬνν΄μΌνλ€.
- μ€μ§ μμμ μν μ©λλ‘λ§ μ¬μ©νκ³ μΆμ λ μΆμ ν΄λμ€λ₯Ό μ¬μ©νλ€.
- μΆμ ν΄λμ€λ μΈμ€ν΄μ€λ‘ λ§λ€ μ μλ€ -> μλ¬ λ°μ
- νμν΄λμ€μμ λ°λμ ꡬνν΄μΌν λ©μλλ₯Ό μ§μ νλ μ©λλ‘ μ¬μ©λλ€
'Language > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Python] λμ λ리(Dictionary) (0) | 2025.03.19 |
|---|---|
| [Python] μνμ€ μλ£ν(리μ€νΈ, νν, range, λ¬Έμμ΄) (1) | 2025.03.19 |
| [Python] λ°°μ΄κ³Ό νν(feat. FizzBuzz) (1) | 2025.03.11 |
| [Python] λΉκ΅ μ°μ°μ, λ Όλ¦¬ μ°μ°μ (0) | 2025.03.11 |
| [Python] λ³μμ λ¬Έμμ΄ μ μΆλ ₯ (2) | 2025.03.11 |