Helloπ I'm Dona!:)
κ°μ²΄ μ§ν₯νλ‘κ·Έλλ° μμ΄λ‘λ OOP(Object-Oriented-Programming)μ λν΄ μ 리νκΈ° 2ν! π‘
π μΈμ€ν΄μ€ λ³μ(instance variable)
μ§λ ν¬μ€ν μμ μΈκΈνλ―, μΈμ€ν΄μ€λ κ°μ²΄λ₯Ό μ€μ²΄ν μν¨ κ²μΌλ‘ ν΄λμ€λ‘ λ§λ€ μ μλ€.
μ€λλ μΈμ€ν΄μ€ λ³μ μν€λ°±κ³Όλ₯Ό λ¨Όμ μ§κ³ λμ΄κ°μ
ν΄λμ€κ° μλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μΈμ€ν΄μ€ λ³μ(instance variable)λ ν΄λμ€μ μ μλ λ³μλ‘, μΈμ€ν΄μ€ λ³μλ ν΄λμ€ λ³μμ λΉμ·νλ€. μΈμ€ν΄μ€ λ³μλ ν΄λμ€ λ³μκ° μλμ§λ§ μ μ¬μ μ΄ μλ€.
ν΄λμ€ μμ±(ν΄λμ€ νλ‘νΌν°, νλ, λ°μ΄ν° λ©€λ²)μ μΌμ’ μ΄λ€. ν΄λμ€λ μΈμ€ν΄μ€ λ©μλμ ν΄λμ€ λ©μλλ₯Ό λ λ€ μμ ν μ μλ€.
λ³μλ μ€λΈμ νΈκ° μκΈ° μμ μ μκ³ μλ μμ±μ΄λ€. μ€λΈμ νΈμ λͺ¨λ μΈμ€ν΄μ€λ€μ μμ λ§μ μΈμ€ν΄μ€ λ³μμ μ¬λ³Έμ κ°μ§κ³ μμΌλ©°, κ°μ΄ κ°μ²΄λ§λ€ λμΌνλ€κ³ νλλΌλ κ·Έλ¬νλ€. νλμ κ°μ²΄ μΈμ€ν΄μ€λ λ€λ₯Έ λͺ¨λ μΈμ€ν΄μ€μ μν₯μ λ―ΈμΉμ§ μκ³ μλ μΈμ€ν΄μ€ λ³μλ€μ κ°μ λ°κΏ μ μλ€. μΈμ€ν΄μ€ λ³μλ€μ λ©μλκ° μ μ μΌλ‘ μ μΈλμ΄ μμ§ μμ κ²½μ° λͺ¨λ ν΄λμ€ λ©μλλ€μ μν΄ μ¬μ©λ μ μλ€.
μΈμ€ν΄μ€ λ©μλ, ν΄λμ€ λ©μλ, μ μ λ©μλ λ± λ©μλμ κ΄λ ¨λ λ΄μ©λ€μ΄ λ§μλ° ν΄λΉ λ΄μ©μ λ€μ ν¬μ€ν μμ λ€λ£° μμ ! π§βοΈ
μ΄μ μ½κ² μ 리ν΄λ³΄μ!
- μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ μμ λ§μ μμ±(Attribute), κ³ μ ν λ³μλ₯Ό λ§νλ€.
- μ½λλ‘ μ°λ©΄ {μΈμ€ν΄μ€μ μ΄λ¦}.{μΈμ€ν΄μ€ λ³μ} μ΄λ κ² μ°μ΄λλ°, μΈμ€ν΄μ€ λ³μ = μμ±(Attribute)λΌκ³ μκ°νλ©΄ μ½λ€!
- 미리 μ μλ μΈμ€ν΄μ€ λ³μλ§ μ¬μ©ν μ μλ€.
λ°±λ¬Έμ΄ λΆμ¬μΌκ²¬μ΄λΌκ³ , μμ λ΄μ©λ€μ μ½λλ‘ λ³΄μ! π
# class λ§λ€κΈ° : ν΄λμ€μ μ΄λ¦μ νμ λλ¬Έμλ‘ μμ
class User:
pass
# User ν΄λμ€μ μΈμ€ν΄μ€ user1, user2, user3 μμ± : κ°μ ν΄λμ€λ‘ λ§λ€μμ§λ§, κ°κ° λ€λ₯Έ μΈμ€ν΄μ€
user1 = User()
user2 = User()
user3 = User()
# μΈμ€ν΄μ€ λ³μ μ μ : μΈμ€ν΄μ€ μμ λ§μ μμ±
# {μΈμ€ν΄μ€ μ΄λ¦}.{μΈμ€ν΄μ€ λ³μ} = {μΈμ€ν΄μ€ μ΄λ¦}.{μμ± μ΄λ¦}
user1.name = 'dona'
user1.email = 'iminj1995@gmail.com'
user1.password = '1234'
user2.name = 'mimi'
user2.email = 'mimi@gmail.com'
user2.password = '5678'
# μΈμ€ν΄μ€ λ³μ μ¬μ©ν΄λ³΄κΈ°
print(user1.name)
# out : dona
# μλ μΈμ€ν΄μ€ λ³μλ error : 미리 μ μλ μΈμ€ν΄μ€ λ³μλ§ μ¬μ©ν μ μλ€.
print(user1.age)
# out : AttributeError : 'User' object has no attribute 'age'
π ν΄λμ€ λ³μ(class variable)
ν΄λμ€κ° μλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ ν΄λμ€ λ³μ(class variable)λ ν΄λμ€μ μΈμ€ν΄μ€κ° μΌλ§λ λ§μ΄ μ‘΄μ¬νλμ§μ κ΄κ³ μμ΄, νλμ μ¬λ³Έμ΄ μ‘΄μ¬νλ ν΄λμ€μ μ μλ λ³μμ΄λ€.
ν΄λμ€ λ³μλ μΈμ€ν΄μ€ λ³μκ° μλλ€. μ΄κ²μ νΉλ³ν μ’ λ₯μ ν΄λμ€ μμ±(λλ ν΄λμ€ νλ‘νΌν°, νλ, λ°μ΄ν° λ©€λ²)μ΄λ€. ν΄λμ€λ μΈμ€ν΄μ€ λ©μλμ ν΄λμ€ λ©μλλ₯Ό λ λ€ μμ ν μ μλ€. -ν΄λμ€ λ³μ μν€λ°±κ³Ό
μν€ λ°±κ³Όμμ νλμ μ¬λ³Έμ΄ μ‘΄μ¬νλ ν΄λμ€μ μ μλ λ³μλΌκ³ νλλ°, μ½κ² μκ°ν΄λ³΄μ
μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ μμ λ§μ μμ±μ λ§νλ€. ν΄λμ€ λ³μλ ν΄λμ€μ μμ±μ λ§νλ€. λμ± μ ννκ² μ 리νλ©΄ μλμ κ°λ€.
ν΄λμ€ λ³μ : κ°μ ν΄λμ€μ λͺ¨λ μΈμ€ν΄μ€λ€μ΄ 곡μ νλ μμ±
- ν΄λμ€ λ³μλ₯Ό μ½λ λ°©λ²μ μλμ 2κ°μ§ : {ν΄λμ€ μ΄λ¦}.{ν΄λμ€ λ³μ μ΄λ¦}, {μΈμ€ν΄μ€ μ΄λ¦}.{ν΄λμ€ λ³μ μ΄λ¦}
- ν΄λμ€ λ³μ κ°μ μμ λλ μ€μ νλ λ°©λ² : {ν΄λμ€ μ΄λ¦}.{ν΄λμ€ λ³μ} μ΄λ¦λ§ κ°λ₯νλ€.
β‘οΈ κ²°λ‘ : μ½μ λλ μΈμ€ν΄μ€μ ν΄λμ€ μ΄λ¦μΌλ‘ λͺ¨λ κ°λ₯νμ§λ§, μ€μ μ΄λ μμ μ ν΄λμ€ μ΄λ¦μΌλ‘λ§ κ°λ₯νλ€.
μΈμ€ν΄μ€ λ³μμ ν·κ°λ¦΄ μ μκΈ° λλ¬Έμ, ν΄λμ€ λ³μμ κ°μ μ€μ ν λλ ν΄λμ€ μ΄λ¦μΌλ‘λ§ μ μνλ κ²μ΄ μ’λ€.
λ§μ°¬κ°μ§λ‘ μ½λλ‘ λ΄ μλ€π
class User:
# countλΌλ ν΄λμ€ λ³μ μ μ
count = 0
# μλ λ΄μ©μ λ€μ ν¬μ€ν
(λ©μλμ μ’
λ₯)μμ λ€λ£° μμ
def __init__(self, name, email, password):
self.name = name
self.email = email
self.password = password
User.count += 1 # μΈμ€ν΄μ€κ° μ μλ λλ§λ€ ν΄λμ€ λ³μμΈ count +1
user1 = User("dona", "iminj1995@gmail.com", "1234")
user2 = User("mimi", "mimi@gmail.com", "5678")
## ν΄λμ€ λ³μ κ° μ½κΈ°
# {ν΄λμ€ μ΄λ¦}.{ν΄λμ€ λ³μμ΄λ¦}
print(User.count)
# out : 2
# {μΈμ€ν΄μ€ μ΄λ¦}.{ν΄λμ€ λ³μμ΄λ¦}
print(user1.count)
# out : 2
print(user2.count)
# out : 2
## ν΄λμ€ λ³μ κ° μμ νκΈ° : {ν΄λμ€ μ΄λ¦}.{ν΄λμ€ λ³μμ΄λ¦}λ§ κ°λ₯νλ€
User.count = 5
# νμΈ
print(User.count)
# out : 5
'''{μΈμ€ν΄μ€ μ΄λ¦}.{ν΄λμ€ λ³μμ΄λ¦}μΌλ‘ ν΄λ ν΄λμ€ λ³μμΈ countλ λ³νμ§ μμ§λ§,
user2μ countκ°λ§ λ°λμ΄ ν·κ°λ¦΄ μ μμΌλ―λ‘ μ£ΌμνκΈ°'''
user1.count = 2
print(user1.count) # out : 2
print(user2.count) # out : 5
print(User.count) # out : 5
μΈμ€ν΄μ€ λ³μμ ν΄λμ€ λ³μμ μ°¨μ΄μ λν΄ μμ보μλ€. λ€μ ν¬μ€ν μμ λ©μλμ μ’ λ₯μ λν΄ λ€λ£¨μ΄λ³΄μ!
π Reference
- μν€λ°±κ³Ό
- μ½λμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
π‘ ν΄λΉ λΈλ‘κ·Έ OOP series
- [OOP] (1) ν΄λμ€, κ°μ²΄, μΈμ€ν΄μ€, κ°μ²΄μ§ν₯ vs μ μ°¨μ§ν₯ νλ‘κ·Έλλ° μ μ
- [OOP] (2) μΈμ€ν΄μ€ λ³μμ ν΄λμ€ λ³μ
- [OOP] (3) λ©μλμ μ’ λ₯ : μΈμ€ν΄μ€ λ©μλ, ν΄λμ€ λ©μλ, μ μ λ©μλ (with νμ΄μ¬ μ½λ) & νΉμλ©μλ