🐍 Python/기초

[Python] self와 __init__

γ…… γ…œ γ…” γ…‡ 2022. 10. 1. 17:00
728x90

Class λŠ” 크게 속성 / λ©”μ„œλ“œλ‘œ ꡬ성

 

- λ©”μ„œλ“œ : κΈ°λŠ₯을 ν•˜λŠ” ν•¨μˆ˜

- 속성 : 데이터

Personμ΄λΌλŠ” ν΄λž˜μŠ€κ°€ μžˆμ„ λ•Œ, 이름, λ‚˜μ΄, 직업 λ“±μ˜ 정보가 속성이고 μžκΈ°μ†Œκ°œμ™€ 같은 κΈ°λŠ₯이 λ©”μ„œλ“œ

μ—¬κΈ°μ„œ selfλŠ” 자기 μžμ‹ , 즉 μΈμŠ€ν„΄μŠ€λ₯Ό μ˜λ―Έν•œλ‹€. 

class Person():
    def __init__(self,name,age,job):
        self.name = name
        self.age = age
        self.job = job

 

 

 

Class ꡬ성 μ‹œ μž₯점

- κΈ€λ‘œλ²Œ λ³€μˆ˜λ₯Ό μ—†μ• κ³ , λͺ¨λ“  λ³€μˆ˜λ₯Ό μ–΄λ– ν•œ μŠ€μ½”ν”„μ— μ†Œμ†μ‹œν‚΄

- λͺ‡ 번이고 μž¬μ‚¬μš© κ°€λŠ₯

- μ½”λ“œ μˆ˜μ • μ΅œμ†Œν™”

- ν•¨μˆ˜ μ‹€ν–‰ 쀑, ν•¨μˆ˜ μžμ‹ μ„ λ‹€μ‹œ ν˜ΈμΆœν•˜λŠ” 처리 등이 κ°€λŠ₯

 

 

__init__

- μ»¨μŠ€νŠΈλŸ­ν„°λΌκ³  λΆˆλ¦¬λŠ” μ΄ˆκΈ°ν™”λ₯Ό μœ„ν•œ ν•¨μˆ˜(λ©”μ„œλ“œ)

- μΈμŠ€ν„΄μŠ€ν™”λ₯Ό μ‹€μ‹œν•  λ•Œ λ°˜λ“œμ‹œ μ²˜μŒμ— ν˜ΈμΆœλ˜λŠ” νŠΉμˆ˜ν•œ ν•¨μˆ˜

- μΈμŠ€ν„΄μŠ€ 생성과 κ΄€λ ¨ν•΄ λ°μ΄ν„°μ˜ 초기λ₯Ό μ‹€μ‹œν•¨

- 첫 번째 인수둜 λ°˜λ“œμ‹œ self 지정해야함, selfμ—λŠ” μΈμŠ€ν„΄μŠ€ 전체가 μ „λ‹¬λ˜μ–΄ 있음

 

class Person():
    def __init__(self,name,age,job):
        self.name = name
        self.age = age
        self.job = job
        
    def print_name(self):
        print(self.name)
        
j = Person('j', 20, 'student')
j.print_name()

# j

 

 

 

 

Class λ³€μˆ˜  vs  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 차이

  클래슀 λ³€μˆ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜
무엇 인가 ?  클래슀 내뢀에 μ„ μ–Έλœ λ³€μˆ˜ selfκ°€ λΆ™μ–΄ μžˆλŠ” λ³€μˆ˜, 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ 생성
λ³€μˆ˜ μœ„μΉ˜ class의 namespace μΈμŠ€ν„΄μŠ€μ˜ namespace
μ–Έμ œ μ‚¬μš© ?  μΈμŠ€ν„΄μŠ€ 간에 μ„œλ‘œ κ³΅μœ ν•΄μ•Ό ν•˜λŠ” κ°’,
클래슀 λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— 곡유됨
μΈμŠ€ν„΄μŠ€ κ°„ κ³ μœ ν•œ κ°’,
λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ— κ³΅μœ ν•˜λ©΄ μ•ˆλ¨
class Person():
    class_num = 0
    def __init__(self,name,age,job):
        self.name = name
        self.age = age
        self.job = job

j = Person('j', 20, 'student')
j.class_num
#0

class_num은 클래슀 λ³€μˆ˜

 

j.age
#20

ageλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

 

 

728x90