JiYoung Dev πŸ–₯

[파이썬] 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 기초 λ‚΄μš© 정리 및 μš”μ•½ λ³Έλ¬Έ

python

[파이썬] 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 기초 λ‚΄μš© 정리 및 μš”μ•½

Shinjio 2023. 2. 22. 16:50

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 곡뢀λ₯Ό ν•˜λ©΄μ„œ 띄엄띄엄 곡뢀λ₯Ό ν•˜λ‹€ λ³΄λ‹ˆ 각각의 λ‚΄μš©μ΄ 머릿속에 흩어져 μžˆμ–΄ 정리λ₯Ό ν•΄λ³΄κ³ μž ν•œλ‹€. μ§€κΈˆκΉŒμ§€ λ‚΄κ°€ 배운 λ‚΄μš©μ€ 기초적인 λ‚΄μš©μ΄λ―€λ‘œ μΆ”ν›„ κ³΅λΆ€ν•˜κ²Œ 될 λ‚΄μš©μ€ 곡뢀 후에 λ‹€μ‹œ μ •λ¦¬ν•΄μ„œ μ—…λ‘œλ“œ 해보겠닀. 

 

β€» μ£Όμ˜μ μ€ λ‚΄κ°€ 듀은 κ°•μ˜, λΈ”λ‘œκ·Έ 자료 등을 λͺ¨μ•„ λ‚΄κ°€ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ‚˜μ˜ 생각을 μž‘μ„±ν•œ λ‚΄μš©μ΄λ―€λ‘œ μž‘μ„±ν•œ λ‚΄μš© 쀑 ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆλ‹€λŠ” 것이닀. 

 


 

파이썬 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 기초 λ‚΄μš© μ •λ¦¬μ˜ μ‹œμž‘μ€ μ•„λž˜μ˜ λ¬Έμž₯으둜 μ‹œμž‘ν•΄λ³΄λ € ν•œλ‹€. 

 

νŒŒμ΄μ¬μ€ 순수 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어이닀.

 

이 λ¬Έμž₯의 의미λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄ κ°€μž₯ λ¨Όμ € μ•Œμ•„μ•Ό ν•  것은 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€ 무엇인가이며, κ·Έ μ•ˆμ—μ„œ 또 κ°μ²΄λž€ 무엇인지λ₯Ό μ•Œμ•„μ•Ό ν•œλ‹€. 그럼 본격적으둜 이에 λŒ€ν•΄ 이해λ₯Ό μ‹œμž‘ν•΄ 보자. 

 

πŸ”Ž 객체(object)λž€ 무엇인가?

ν”„λ‘œκ·Έλž˜λ° μ„Έκ³„μ—μ„œ 객체(object)λž€ 속성과 행동(κΈ°λŠ₯)을 가진 μ–΄λ– ν•œ μ‘΄μž¬μ΄λ‹€. 처음 μ΄λ ‡κ²Œλ§Œ 쓰여진 λ¬Έμž₯을 봀을 λ•ŒλŠ” 이해가 λ˜μ§€ μ•ŠλŠ”λ‹€. κ·ΈλŸ¬λ‚˜ 예λ₯Ό λ“€λ©΄ 이해가 μ‰¬μ›Œμ§„λ‹€.  λͺ¨λ‹ˆν„°κ°€ μžˆλ‹€κ³  치자. λͺ¨λ‹ˆν„°λŠ” 객체이닀. μ™œλƒν•˜λ©΄ λͺ¨λ‹ˆν„°λŠ” 속성과 행동을 가지고 있기 λ•Œλ¬Έμ΄λ‹€. 그럼 λͺ¨λ‹ˆν„°λŠ” μ–΄λ– ν•œ 속성과 행동을 가지고 μžˆμ„κΉŒ? λͺ¨λ‹ˆν„°μ˜ 속성은 λͺ¨λΈλͺ…, ν™”λ©΄μ˜ 크기, 색상, μ•‘μ •μ˜ μ’…λ₯˜ 등이 μžˆλ‹€. 즉, 속성은 μ–΄λ– ν•œ 객체가 κ°€μ§€λŠ” 데이터라고 μƒκ°ν•˜λ©΄ 쉽닀. κ·Έλ ‡λ‹€λ©΄ λͺ¨λ‹ˆν„°μ˜ 행동은 무엇인가? λͺ¨λ‹ˆν„°μ˜ 행동은 화면을 좜λ ₯ν•˜λŠ” 것이닀. μ΄λ ‡κ²Œ λͺ¨λ‹ˆν„°λŠ” 속성과 행동을 가진 ν•˜λ‚˜μ˜ 객체가 λœλ‹€. 또 λ‹€λ₯Έ 예λ₯Ό λ“€μ–΄λ³΄μž. 이번 μ˜ˆμ‹œλŠ” λ°”λ‘œ 'λ‚˜'이닀. λ‚˜μ˜ 속성은 λ¬΄μ—‡μΌκΉŒ? 이름이 될 수 있고, 성별, λ‚˜μ΄, ν‚€, λͺΈλ¬΄κ²Œ λ“± μ—¬λŸ¬ κ°€μ§€μ˜ 것듀이 속성이 될 수 μžˆλ‹€. 그럼 행동은 λ¬΄μ—‡μΌκΉŒ? κ±·λ‹€. λ›°λ‹€. λˆˆμ„ κΉœλΉ‘μ΄λ‹€. 뭐 이런 것듀이 될 수 μžˆλ‹€. λ”°λΌμ„œ 'λ‚˜'λΌλŠ” μ‘΄μž¬λ„ ν•˜λ‚˜μ˜ 객체이닀.  

 

μ—¬κΈ°μ„œ μ •λ¦¬ν•΄λ³΄μž. 객체(object)λž€ 무엇인가?

 κ°μ²΄(object)λž€ 속성과 행동을 가진 쑴재둜 속성과 행동을 μ •μ˜ν•  수 μžˆλŠ” λͺ¨λ“  μ‘΄μž¬λŠ” 객체가 λœλ‹€. 

 

μœ„μ—μ„œ κ°μ²΄λž€ 무엇인지 μ•Œμ•„λ³΄μ•˜λ‹€. μ΄μ œλŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€ 무엇인지 μ•Œμ•„λ³Ό 차둀이닀. 

 

πŸ”Ž 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(object-oriented programming, OOP)μ΄λž€ 무엇인가?

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ 말 κ·ΈλŒ€λ‘œ 객체λ₯Ό 지ν–₯ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ°, 객체λ₯Ό ν™œμš©ν•œ ν”„λ‘œκ·Έλž˜λ°μ΄λž€ λœ»μ΄λ‹€. μ •ν™•ν•˜κ²ŒλŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ λ‹€μˆ˜μ˜ 객체둜 κ΅¬μ„±ν•˜κ³ , μ—¬λŸ¬ 객체듀 κ°„μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 방식이닀. 이 λ‚΄μš© λ˜ν•œ 예λ₯Ό λ“€λ©΄ 이해가 μ‰¬μ›Œμ§„λ‹€. μœ„μ—μ„œ 객체의 μ •μ˜λ₯Ό μ„€λͺ…ν•  λ•Œ λͺ¨λ‹ˆν„°λŠ” ν•˜λ‚˜μ˜ 객체라고 ν–ˆλ‹€. λͺ¨λ‹ˆν„°λŠ” ν•˜λ‚˜μ˜ 객체이고, 프린터도 좜λ ₯을 ν•˜λŠ” κΈ°λŠ₯κ³Ό λͺ¨λΈλͺ…이라든가 색상 λ“±μ˜ 속성을 가진 ν•˜λ‚˜μ˜ 객체이닀. ν‚€λ³΄λ“œ λ˜ν•œ ν•˜λ‚˜μ˜ 객체이고, 마우슀, 컴퓨터 본체 λ˜ν•œ 객체이닀. μ΄λ ‡κ²Œ μ»΄ν“¨ν„°λŠ” μ—¬λŸ¬ 개의 객체듀이 λͺ¨μ—¬ μƒν˜Έμž‘μš©μ„ ν•˜λ©° μž‘λ™ν•œλ‹€. μ–΄λ–»κ²Œ μƒν˜Έμž‘μš©ν•˜λƒκ³ ? λ‚΄κ°€ ν‚€λ³΄λ“œλΌλŠ” 객체λ₯Ό μ΄μš©ν•΄ κΈ€μžλ₯Ό μž‘μ„±ν•œλ‹€. 그러면 λͺ¨λ‹ˆν„°λŠ” ν‚€λ³΄λ“œμ—μ„œ μž‘μ„±ν•œ λ‚΄μš©μ„ 눈으둜 λ³Ό 수 있게 화면에 좜λ ₯을 ν•˜κ³ , ν”„λ¦°ν„°λŠ” 더 λ‚˜μ•„κ°€ 쒅이 μœ„μ— 인쇄λ₯Ό ν•œλ‹€. λ˜ν•œ, ν‚€λ³΄λ“œλ‘œ μž‘μ„±ν•œ λ‚΄μš©μ€ 컴퓨터에 μ €μž₯을 ν•˜μ—¬ λ‚˜μ€‘μ—λ„ λ‚΄μš©μ„ λΆˆλŸ¬μ˜€κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆλ‹€(본체의 κΈ°λŠ₯). μ΄λ ‡κ²Œ μ—¬λŸ¬ 개의 객체듀이 μƒν˜Έμž‘μš©ν•˜λ©΄μ„œ ν•˜λ‚˜μ˜ 컴퓨터가 μ •μƒμ μœΌλ‘œ λ™μž‘ν•œλ‹€. 이런 μ‹μœΌλ‘œ λ‹€μ–‘ν•œ κ°μ²΄λ“€μ˜ 속성(데이터)와 행동(κΈ°λŠ₯)이 μ„œλ‘œ μƒν˜Έμž‘μš©ν•˜λ©° μž‘λ™ν•˜λ„λ‘ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 것이 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€. 

 

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(object-oriented programming, OOP)μ΄λž€, ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ κΈ°λŠ₯κ³Ό 속성을 가진 λ‹€μˆ˜μ˜ 객체둜 κ΅¬μ„±ν•˜μ—¬ 이듀 κ°„μ˜ μƒν˜Έμž‘μš©μ„ 톡해 λ§Œλ“œλŠ” 방식

 


 

μ§€κΈˆκΉŒμ§€λŠ” 객체와 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ μ˜λ―Έμ— λŒ€ν•΄μ„œ μ΄μ•ΌκΈ°ν•΄λ³΄μ•˜λ‹€. 그럼 λ‹€μ‹œ λ‹€μŒμ˜ λ¬Έμž₯을 상기해 보자. "νŒŒμ΄μ¬μ€ 순수 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어이닀" 즉, νŒŒμ΄μ¬μ€ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λŠ” μ–Έμ–΄λ‘œ 객체λ₯Ό κ΅¬μ„±ν•˜κ³  객체듀이 μ„œλ‘œ μƒν˜Έμž‘μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μž‘λ™ν•  수 있게 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€. 

 

κ·Έλ ‡λ‹€λ©΄ 본격적으둜 νŒŒμ΄μ¬μ—μ„œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μ–΄λ–€μ‹μœΌλ‘œ ν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž. 이λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„λž˜ μš©μ–΄μ— λŒ€ν•œ 정리가 ν•„μš”ν•˜λ‹€.

 

클래슀, μΈμŠ€ν„΄μŠ€, 속성, λ©”μ†Œλ“œ

 

μ™œ μœ„μ˜ μš©μ–΄λ₯Ό μ•Œμ•„μ•Ό ν•˜λƒ? νŒŒμ΄μ¬μ€ μœ„μ˜ 4가지λ₯Ό 기초둜 ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 쑰금 μ–΄λ ΅κ²Œ λ§ν•˜λ©΄, 객체λ₯Ό μ‘°μž‘ν•˜κ³ , μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 기본적인 κ°œλ…λ“€μ΄ λ°”λ‘œ 클래슀, μΈμŠ€ν„΄μŠ€, 속성, λ©”μ†Œλ“œμ΄λ‹€. κ²°κ΅­ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ 객체λ₯Ό λ§Œλ“€κ³  μ„œλ‘œ μƒν˜Έμž‘μš©ν•˜λ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•˜λ―€λ‘œ 객체λ₯Ό μ‘°μž‘ν•˜κ³ , μ •μ˜ν•˜λŠ” 게 기본적인 단계이닀. λ”°λΌμ„œ μœ„μ˜ 4가지 κ°œλ…μ„ 잘 μ•Œμ•„μ•Ό 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 μžˆλ‹€. λ¬Όλ‘ , λ‹€λ₯Έ μš”μ†Œλ„ μžˆμ„ 순 μžˆμ§€λ§Œ λ‚΄κ°€ 배운 λ‹¨κ³„λŠ” μ—¬κΈ°κΉŒμ§€μ΄λ―€λ‘œ μœ„μ˜ 4κ°€μ§€λ§Œ 정리λ₯Ό ν•΄λ³Έλ‹€. 그럼 μ§€κΈˆλΆ€ν„° 클래슀, μΈμŠ€ν„΄μŠ€, λ©”μ†Œλ“œ, λ³€μˆ˜κ°€ 무엇인지 그리고 νŒŒμ΄μ¬μ—μ„œ μ–΄λ– ν•œ λ¬Έλ²•μœΌλ‘œ μž‘μ„±λ˜λŠ”μ§€ ν•˜λ‚˜ν•˜λ‚˜ μ•Œμ•„λ³΄μž. 

 

본격적인 λ‚΄μš©μ— 듀어가기에 μ•žμ„œ 각 κ°œλ…λ“€μ— λŒ€ν•΄ κ°„λž΅ν•˜κ²Œ 정리해 λ³΄μ•˜λ‹€. 

 

● 클래슀(class) : 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν‹€
● μΈμŠ€ν„΄μŠ€(instance) : 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ λ§Œλ“  객체
● 속성(attributes) : 객체가 κ°€μ§€λŠ” 데이터 
● λ©”μ†Œλ“œ(method) : 객체가 κ°€μ§€λŠ” 행동

 

πŸ“– 클래슀(class)

ν΄λž˜μŠ€λŠ” 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν‹€(templete or blueprint)이닀. μ•„κΉŒ κ°μ²΄μ—λŠ” 속성과 행동이 μžˆμ–΄μ•Ό ν•œλ‹€κ³  ν–ˆλ‹€. λ”°λΌμ„œ ν΄λž˜μŠ€μ—μ„œλŠ” 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ ν•„μš”ν•œ 속성과 행동을 μ •μ˜ν•œλ‹€.  

 

νŒŒμ΄μ¬μ—μ„œ 클래슀λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„λž˜μ™€ 같은 문법을 μ‚¬μš©ν•œλ‹€.

class 클래슀 이름:
    λ³€μˆ˜ μ •μ˜           #속성
    ν•¨μˆ˜ μ •μ˜           #행동(λ©”μ†Œλ“œ)

단, 클래슀 μ΄λ¦„μ˜ 맨 첫 κΈ€μžλŠ” 항상 λŒ€λ¬Έμž

 

'class'λΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ“°κ³ , κ·Έλ‹€μŒμ— 클래슀의 이름을 적고 κ·Έ μ˜†μ— 콜둠(:)을 λΆ™μ΄λŠ” 것이닀. 그리고 κ·Έ μ•„λž˜μ— 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ ν•„μš”ν•œ 속성과 행동을 μ •μ˜ν•œλ‹€. μ•„λž˜μ—μ„œ μžμ„Ένžˆ λ‹€λ£° ν…Œμ§€λ§Œ 이해λ₯Ό μœ„ν•΄ 미리 μ„€λͺ…ν•˜μžλ©΄ 속성은 λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ, 행동(method)은 ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ μ •μ˜ν•œλ‹€. 

 

μ‹€μ œ μž‘μ„±λœ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄μž. 

좜처 : chatGPT

 

μœ„μ˜ μ½”λ“œμ—μ„œ Personμ΄λΌλŠ” μ΄λ¦„μ˜ 클래슀λ₯Ό μ„ μ–Έν–ˆλ‹€. Person 클래슀 μ•ˆμ—λŠ” nameκ³Ό ageλΌλŠ” 2개의 속성을 μ •μ˜ν•œ λ³€μˆ˜κ°€ 있고, say_helloλΌλŠ” 행동(λ©”μ†Œλ“œ)κ°€ μžˆλ‹€. μ•žμœΌλ‘œ 행동은 λ©”μ†Œλ“œ(method)라고 μΉ­ν•˜κ² λ‹€. 

 

πŸ“– μΈμŠ€ν„΄μŠ€(instance)

두 번째, μΈμŠ€ν„΄μŠ€λŠ” μœ„μ—μ„œ μ„€λͺ…ν•œ 클래슀λ₯Ό 톡해 λ§Œλ“  각각의 객체(object)λ₯Ό λ§ν•œλ‹€. 이 λ¬Έμž₯λ§ŒμœΌλ‘œλŠ” 이해가 μ•ˆ 갈 μˆ˜λ„ μžˆλŠ”λ° μ‹€μ œ μ½”λ“œλ₯Ό λ³΄λ©΄μ„œ μžμ„Ένžˆ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€. 

 

β–Όβ–Όβ–Ό 클래슀 μ„ μ–Έ β–Όβ–Όβ–Ό

좜처 : chatGPT

 

β–Όβ–Όβ–Ό μΈμŠ€ν„΄μŠ€ 생성 β–Όβ–Όβ–Ό

좜처 : chatGPT

 

클래슀λ₯Ό μ„€λͺ…ν•  λ•Œ λ³Έ μ½”λ“œμ΄λ‹€. ν΄λž˜μŠ€λž€ 객체λ₯Ό λ§Œλ“œλŠ” ν•˜λ‚˜μ˜ 틀이라고 ν–ˆλ‹€. 즉, 클래슀λ₯Ό μ΄μš©ν•˜λ©΄ 객체λ₯Ό λ§Œλ“€ 수 μžˆλ‹€λŠ” 것이닀. μ΄λ•Œ μƒμ„±λœ 객체λ₯Ό μΈμŠ€ν„΄μŠ€(instance)라고 λΆ€λ₯Έλ‹€. 

 

두 번째 사진인 μΈμŠ€ν„΄μŠ€ 생성 μ½”λ“œλ₯Ό 보자. 'p'λΌλŠ” μΈμŠ€ν„΄μŠ€λŠ” 'Person'μ΄λΌλŠ” 클래슀λ₯Ό 톡해 λ§Œλ“  것이고, 'p'λΌλŠ” μΈμŠ€ν„΄μŠ€μ—λŠ” name이 john이고, ageκ°€ 30인 속성과 say_helloλΌλŠ” λ©”μ†Œλ“œλ₯Ό 가진닀. 

 

μΈμŠ€ν„΄μŠ€ 생성 문법은 μ•„λž˜μ™€ κ°™λ‹€.

μΈμŠ€ν„΄μŠ€ 이름 = 클래슀 이름(νŒŒλΌλ―Έν„°1, νŒŒλΌλ―Έν„°2)

 

πŸ“– 속성(attribute)

μ„Έ λ²ˆμ§ΈλŠ” 속성이닀. 속성은 μœ„μ—μ„œ 객체λ₯Ό μ„€λͺ…ν•  λ•Œ 많이 언급을 ν–ˆλŠ”λ° νŒŒμ΄μ¬μ—μ„œλŠ” μ–΄λ–€ μ‹μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ μ‚΄νŽ΄λ³΄μž. 

 

좜처 : chatGPT

 

μ•„κΉŒ λ³Έ Personμ΄λΌλŠ” 클래슀λ₯Ό μ„ μ–Έν•œ μ½”λ“œμ΄λ‹€. class μ•„λž˜μ˜ 쀄을 보면 def __init__ 쀄이 있고, κ·Έ μ•„λž˜μ— self.name = name, self.age = ageκ°€ μžˆλ‹€. μ—¬κΈ°μ„œ λ°”λ‘œ nameκ³Ό ageκ°€ 속성에 ν•΄λ‹Ήν•œλ‹€. 이름과 λ‚˜μ΄. 즉, 객체가 κ°€μ§€λŠ” 데이터λ₯Ό μ˜λ―Έν•œλ‹€. 즉, νŒŒμ΄μ¬μ—μ„œ 속성은 클래슀 μ•ˆμ—μ„œ λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ μ •μ˜λœλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œλŠ” nameμ΄λΌλŠ” λ³€μˆ˜μ™€ ageλΌλŠ” λ³€μˆ˜λ‘œ 속성을 μ •μ˜ν–ˆλ‹€. 

 

좜처 : chatGPT

 

그리고 μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ“€μ€ μ†μ„±μ˜ 값듀을 κ°–λŠ”λ‹€. pλΌλŠ” μΈμŠ€ν„΄μŠ€λŠ” nameμ΄λΌλŠ” λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ μ •μ˜λœ 속성에 λŒ€ν•˜μ—¬ "John"μ΄λΌλŠ” 값을 가지고, ageλΌλŠ” λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ μ •μ˜λœ 속성에 λŒ€ν•˜μ—¬ 30μ΄λΌλŠ” 값을 가진닀. 

 

πŸ“– λ©”μ†Œλ“œ(method)

λ§ˆμ§€λ§‰μœΌλ‘œ λ©”μ†Œλ“œμ΄λ‹€. λ©”μ†Œλ“œλŠ” 객체의 행동을 μ˜λ―Έν•œλ‹€. λ©”μ†Œλ“œ λ˜ν•œ 속성과 같이 클래슀 μ•ˆμ—μ„œ μ •μ˜λ˜λ©° 속성이 λ³€μˆ˜λΌλŠ” ν˜•νƒœλ‘œ μ •μ˜λ˜λŠ” 반면, λ©”μ†Œλ“œλŠ” ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ μž‘μ„±λœλ‹€. 

 

좜처 : chatGPT

 

μœ„μ˜ μ½”λ“œμ—μ„œ λ©”μ†Œλ“œλŠ” say_hello(self)라고 μ •μ˜λœ ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. 

 


 

μ΄λ ‡κ²Œ 클래슀, μΈμŠ€ν„΄μŠ€, 속성, λ©”μ†Œλ“œμ— λŒ€ν•˜μ—¬ κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³΄μ•˜λ‹€. 이제 μ•Œμ•„μ•Ό ν•  것은 클래슀λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성과 λ©”μ†Œλ“œλ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν•˜κ³ , μ–΄λ–»κ²Œ 뢈러올 것이냐에 λŒ€ν•œ 것이닀. 

 

λ‹€μ‹œ 클래슀λ₯Ό μ„ μ–Έν•˜λŠ” 것뢀터 μ‹œμž‘ν•˜μž. 

 

class 클래슀 이름:
    λ³€μˆ˜ μ •μ˜           #속성
    ν•¨μˆ˜ μ •μ˜           #행동(λ©”μ†Œλ“œ)

 

좜처 : chatGPT

 

Personμ΄λΌλŠ” 클래슀λ₯Ό μ„ μ–Έν•˜κ³ , κ·Έ μ•ˆμ— 속성과 λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•œλ‹€. 이 λ•Œ 속성은 λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ, λ©”μ†Œλ“œλŠ” ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ μž‘μ„±ν•œλ‹€. Person ν΄λž˜μŠ€λŠ” nameκ³Ό ageλΌλŠ” 속성을 가지고 있고, say_helloλΌλŠ” λ©”μ†Œλ“œλ₯Ό 가지고 μžˆλ‹€. 

 

좜처 : chatGPT

 

pλΌλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν–ˆλ‹€. 그러면 p μΈμŠ€ν„΄μŠ€λŠ” Person클래슀λ₯Ό 톡해 name = "John"이고 age = 30인 객체가 λœλ‹€. 

그런데 λ§Œμ•½ λ‚΄κ°€ qλΌλŠ” 또 λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν–ˆλ‹€. q μΈμŠ€ν„΄μŠ€λŠ” name = "ally"이고 age = 15인 속성값을 가진닀. μ΄λ ‡κ²Œ μΈμŠ€ν„΄μŠ€λŠ” μš°λ¦¬κ°€ μ›ν•˜λŠ” 만큼 생성할 수 있고, 이듀은 λͺ¨λ‘ 각각의 속성에 λŒ€ν•œ 고유의 값을 가진닀. nameκ³Ό ageλΌλŠ” κ³΅ν†΅μ˜ μ†μ„±μ΄μ§€λ§Œ 그에 ν•΄λ‹Ήν•˜λŠ” κ°’(value)은 μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ‹€λ₯΄λ‹€λŠ” λœ»μ΄λ‹€. νŒŒμ΄μ¬μ—μ„œλŠ” μ΄λŸ¬ν•œ nameκ³Ό age와 같이 μΈμŠ€ν„΄μŠ€κ°€ 고유의 값을 κ°€μ§€λŠ” 속성을 λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜λ₯Ό μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λΌκ³  λ§ν•œλ‹€.

 

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

μΈμŠ€ν„΄μŠ€κ°€ 고유의 값을 κ°€μ§€λŠ” 속성

 

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ •μ˜ν•˜κ³  λΆˆλŸ¬μ˜€λŠ” 방법은 μ•„λž˜μ™€ κ°™λ‹€. 

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ •μ˜ν•˜κΈ°
μΈμŠ€ν„΄μŠ€ 이름.μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 이름 = "μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— 넣을 κ°’"

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ‚¬μš©ν•˜κΈ°
μΈμŠ€ν„΄μŠ€ 이름.μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 이름

 

μ΄λ ‡κ²Œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” dot(.)을 μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜κ±°λ‚˜ 뢈러올 수 μžˆλ‹€.

μ•„λž˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ •μ˜ μž‘μ„± μ½”λ“œμ΄λ‹€. 

 

 

μ•„λž˜μ˜ μ½”λ“œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μž‘μ„±ν•œ μ½”λ“œμ΄λ‹€. 

 

 

μœ„μ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λž€ μΈμŠ€ν„΄μŠ€κ°€ 고유의 값을 κ°€μ§€λŠ” 속성을 λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜λΌκ³  ν–ˆλ‹€. 그러면 μ–΄λ–€ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λ”λΌλ„ 같은 값을 κ°€μ§€λŠ” λ³€μˆ˜ λ˜ν•œ μžˆμ§€ μ•Šμ„κΉŒ? 예λ₯Ό λ“€λ©΄, μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ˜ κ°œμˆ˜μ™€ 같이 말이닀. λ°”λ‘œ μ΄λŸ¬ν•œ λ³€μˆ˜λ₯Ό 클래슀 λ³€μˆ˜λΌκ³  ν•œλ‹€. 즉, 같은 클래슀의 μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” 값을 클래슀 λ³€μˆ˜λΌκ³  ν•œλ‹€. 

 

클래슀 λ³€μˆ˜

같은 클래슀의 μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” κ°’

 

클래슀 λ³€μˆ˜λŠ” 클래슀 μ •μ˜ λΆ€λΆ„ μ•„λž˜μ— μ§€μ •ν•˜κ³  μž‘μ„± 문법과 μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™λ‹€. 

μž‘μ„± 문법
클래슀 λ³€μˆ˜ 이름 = "클래슀 λ³€μˆ˜μ— 넣을 κ°’"

μ‚¬μš© 방법
β‘  클래슀 이름.클래슀 λ³€μˆ˜ 이름
β‘‘ μΈμŠ€ν„΄μŠ€μ΄λ¦„.클래슀 λ³€μˆ˜ 이름

 

μ•„λž˜λŠ” 클래슀 λ³€μˆ˜ μž‘μ„± μ½”λ“œμ΄λ‹€. UserλΌλŠ” 클래슀 μ„ μ–Έ μ•„λž˜μ— count = 0이라고 클래슀 λ³€μˆ˜λ₯Ό μ •μ˜ν•˜μ˜€λ‹€. μ—¬κΈ°μ„œ countλŠ” μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ˜ μ΄κ°œμˆ˜μ΄λ‹€. 그리고 μΈμŠ€ν„΄μŠ€μ˜ 총개수λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄ μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œλ§ˆλ‹€ countλŠ” 1μ”© μΆ”κ°€κ°€ λœλ‹€. 이λ₯Ό __init__ λ©”μ†Œλ“œ 맨 μ•„λž˜μ— μž‘μ„±ν•˜μ˜€λ‹€. 

 

 

μœ„μ˜ μ½”λ“œμ—μ„œλŠ” 클래슀 이름.클래슀 λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ 클래슀 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ˜€λŠ”λ°, 클래슀 λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€ 이름.클래슀 λ³€μˆ˜ μ΄λ¦„μœΌλ‘œλ„ μ‚¬μš©ν•  수 μžˆλ‹€. 이와 κ΄€λ ¨ν•΄μ„œλŠ” μ•„λž˜ μ²¨λΆ€λœ κ΄€λ ¨ 링크의 클래슀 λ³€μˆ˜ 뢀뢄을 μ°Έκ³ ν•˜κΈΈ λ°”λž€λ‹€. 

 

μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œ

 

이제 μΈμŠ€ν„΄μŠ€μ™€ 클래슀 λ³€μˆ˜λ₯Ό μž‘μ„±ν•˜κ³  μ‚¬μš©ν•  수 μžˆμœΌλ‹ˆ λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•˜κ³  μ‚¬μš©ν•΄ 보자. λ©”μ†Œλ“œλŠ” 방금 ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ μž‘μ„±ν•œλ‹€κ³  μ–ΈκΈ‰ν–ˆλ‹€. 클래슀 μ•„λž˜μ— def λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ μ €μž₯ν•˜λ©΄ λœλ‹€. 

 

λ©”μ†Œλ“œ μž‘μ„± 문법
def λ©”μ†Œλ“œ 이름(self, νŒŒλΌλ―Έν„°1, νŒŒλΌλ―Έν„°2, ... ) :
    λͺ…λ Ήλ¬Έ
οΌƒ μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œμ˜ 첫번째 νŒŒλΌλ―Έν„°λŠ” self둜 μž‘μ„±ν•˜λŠ” 것이 κ·œμΉ™ → 첫번째 νŒŒλΌλ―Έν„°λ‘œ μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ λ„£λŠ”λ‹€λŠ” 의미

λ©”μ†Œλ“œ μ‚¬μš© 방법
β‘  μΈμŠ€ν„΄μŠ€ 이름.λ©”μ†Œλ“œ 이름()
β‘‘ 클래슀 이름.λ©”μ†Œλ“œ 이름(μΈμŠ€ν„΄μŠ€ 이름)
# μΈμŠ€ν„΄μŠ€ μ΄λ¦„μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” λ©”μ†Œλ“œ(①방법) μ‚¬μš©μ‹œ 첫번째 νŒŒλΌλ―Έν„°λŠ” μƒλž΅
why? λ©”μ†Œλ“œ μž‘μ„±μ‹œ 첫 번째 νŒŒλΌλ―Έν„° selfλŠ” μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ 의미. λ©”μ†Œλ“œ μ‚¬μš©μ‹œ μΈμŠ€ν„΄μŠ€ μ΄λ¦„μœΌλ‘œ 호좜 ν•  경우, μΈμŠ€ν„΄μŠ€ 이름이 μžλ™μœΌλ‘œ λ©”μ†Œλ“œμ˜ 첫번째 νŒŒλΌλ―Έν„°λ‘œ λ„˜μ–΄κ°€κΈ° λ•Œλ¬Έ. () μ•ˆμ— νŒŒλΌλ―Έν„°λ‘œ μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ 넣을 경우 였히렀 μ—λŸ¬ λ°œμƒ
클래슀 μ΄λ¦„μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” λ©”μ†Œλ“œ(⑑방법) μ‚¬μš© μ‹œμ—λŠ” νŒŒλΌλ―Έν„°λ‘œ μΈμŠ€ν„΄μŠ€ 이름을 λ„£μ–΄μ€˜μ•Ό 함

 

μ•„λž˜λŠ” say_hello(self)λΌλŠ” λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•œ μ½”λ“œ

 

좜처 : chatGPT

 

μ•„λž˜μ™€ 같이 say_hello λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면 μ£Όμ„μ²˜λ¦¬λœ 뢀뢄이 μ½˜μ†”μ— 좜λ ₯

 

좜처 : chatGPT

 

μœ„μ—μ„œ κ°„λž΅ν•˜κ²Œ λ©”μ†Œλ“œ μž‘μ„±λ²•κ³Ό μ‹€ν–‰ 방법에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν–ˆλ‹€. 사싀, μ§€κΈˆκΉŒμ§€ λ§ν•œ λ©”μ†Œλ“œλŠ” μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œλ₯Ό μ˜λ―Έν•œλ‹€. κ·Έ 말은 즉, λ©”μ†Œλ“œμ—λ„ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, 클래슀 λ³€μˆ˜μ™€ 같이 μ’…λ₯˜κ°€ μžˆλ‹€λŠ” 말이닀. λ©”μ†Œλ“œλŠ” 크게 3κ°€μ§€λ‘œ λΆ„λ₯˜ν•œλ‹€. 

 

λ©”μ†Œλ“œμ˜ μ’…λ₯˜
β‘  μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œ : μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œ
β‘‘ 클래슀 λ©”μ†Œλ“œ : 클래슀 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œ
β‘’ 정적 λ©”μ†Œλ“œ : μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, 클래슀 λ³€μˆ˜λ₯Ό λͺ¨λ‘ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”μ†Œλ“œ

 

μœ„μ—μ„œ μ„€λͺ…ν•œ μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œμ˜ 문법을 λ‹€μ‹œ ν•œλ²ˆ μ‚΄νŽ΄λ³΄μž. say_helloμ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ νŒŒλΌλ―Έν„°λ‘œ κ°–κ³ , μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μΈ nameκ³Ό ageλ₯Ό μ‚¬μš©ν•œλ‹€. 이처럼 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œλΌκ³  ν•˜κ³ , 클래슀 λ³€μˆ˜μ˜ 값을 μ½κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό 클래슀 λ©”μ†Œλ“œλΌκ³  ν•œλ‹€. 그럼 정적 λ©”μ†Œλ“œλž€ λ¬΄μ—‡μΌκΉŒ? 정적 λ©”μ†Œλ“œλž€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ 클래슀 λ³€μˆ˜ 쀑 μ–΄λ–€ 것도 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”μ†Œλ“œλ₯Ό λ§ν•œλ‹€. 

 

클래슀 λ©”μ†Œλ“œ

 

 

μœ„μ˜ μ½”λ“œλŠ” countλΌλŠ” 클래슀 λ³€μˆ˜λ₯Ό μ •μ˜ν•œ 것이닀. countλΌλŠ” 클래슀 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 클래슀 λ©”μ†Œλ“œλ₯Ό λ§Œλ“œλŠ” 방법은 μ•„λž˜μ™€ κ°™λ‹€. 

 

 

@classmethod
der 클래슀 λ©”μ†Œλ“œ 이름(cls):
    λͺ…λ Ήλ¬Έ

 

클래슀 μ•ˆμ—μ„œ λ°”λ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œμ™€λŠ” 달리 클래슀 λ©”μ†Œλ“œλŠ” ν•¨μˆ˜ μ •μ˜ μœ„μ— @classmethod ν‚€μ›Œλ“œλ₯Ό λ„£μ–΄μ€˜μ•Ό ν•œλ‹€. λ˜ν•œ, μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œ μ •μ˜μ‹œ μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ νŒŒλΌλ―Έν„°λ‘œ λ°›μ•„ 첫 번째 νŒŒλΌλ―Έν„°λ₯Ό self라고 ν•˜λŠ” 것이 κ·œμΉ™μ΄μ—ˆλ˜ κ²ƒμ²˜λŸΌ 클래슀 λ©”μ†Œλ“œ μž‘μ„±λ„ νŒŒλΌλ―Έν„°λ‘œ 클래슀λ₯Ό λ°›λŠ”λ‹€λŠ” 의미둜 clsλ₯Ό 첫번째 νŒŒλΌλ―Έν„°λ‘œ μž‘μ„±ν•œλ‹€. 

 

 

β‘  클래슀 이름.클래슀 λ©”μ†Œλ“œ()
β‘‘ μΈμŠ€ν„΄μŠ€ 이름.클래슀 λ©”μ†Œλ“œ()
# 클래슀 λ©”μ†Œλ“œ μ‹€ν–‰μ‹œ 클래슀 μ΄λ¦„μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” β‘ μ˜ κ²½μš°μ™€ μΈμŠ€ν„΄μŠ€ μ΄λ¦„μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” β‘‘μ˜ 경우 λͺ¨λ‘ νŒŒλΌλ―Έν„°λ₯Ό μƒλž΅ν•œλ‹€. 클래슀 λ©”μ†Œλ“œμ˜ 경우 μžλ™μœΌλ‘œ 첫번째 νŒŒλΌλ―Έν„°λ‘œ 클래슀λ₯Ό μ „λ‹¬ν•˜κΈ° λ•Œλ¬Έμ΄λ©°, β‘‘μ˜ κ²½μš°μ—λ„ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λŠ” ν•΄λ‹Ή 클래슀둜 μƒμ„±λ˜μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ 클래슀λ₯Ό μ „λ‹¬ν•œλ‹€. 

 

정적 λ©”μ†Œλ“œ

 

λ§ˆμ§€λ§‰μœΌλ‘œ 정적 λ©”μ†Œλ“œλŠ” 클래슀 λ©”μ†Œλ“œμ™€ 같이 ν•¨μˆ˜ μž‘μ„± μ½”λ“œ μœ„μ— @staticmethodλ₯Ό μ“°λ©΄ λœλ‹€. 클래슀 λ©”μ†Œλ“œ, 정적 λ©”μ†Œλ“œμ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜ μ²¨λΆ€λœ κ΄€λ ¨ 링크λ₯Ό μ°Έκ³ ν•˜κΈΈ λ°”λž€λ‹€. 

 


 

λ“œλ””μ–΄ 파이썬 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ κΈ°λ³Έ κ°œλ…κΉŒμ§€ μ•Œμ•„λ³΄μ•˜λ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ λ‹€μ‹œ 처음으둜 λŒμ•„κ°€λ³΄μž. 

 

 

νŒŒμ΄μ¬μ€ 순수 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어이닀. 

 

νŒŒμ΄μ¬μ„ ν™œμš©ν•˜μ—¬ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 μžˆλ‹€λŠ” 것을 μ •λ¦¬ν–ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ™œ νŒŒμ΄μ¬μ„ 순수 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어라고 ν•˜λŠ” κ²ƒμΌκΉŒ? 

 

 

νƒ€μž… ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ •μˆ˜ 2와 λ¬Έμžμ—΄, 리슀트, λ”•μ…”λ„ˆλ¦¬, νŠœν”Œ, ν•¨μˆ˜κ°€ μ–΄λ–€ μžλ£Œν˜•μΈμ§€ 확인해 λ³΄μ•˜λ‹€. 

 

 

μ •μˆ˜ 2λŠ” int ν΄λž˜μŠ€μ— μ†ν•˜κ³ , λ¬Έμžμ—΄ "string"은 str 클래슀, λ¦¬μŠ€νŠΈλŠ” list 클래슀 등이라고 좜λ ₯λœλ‹€. 즉, μ •μˆ˜, λ¬Έμžμ—΄, λ”•μ…”λ„ˆλ¦¬, νŠœν”Œ, ν•¨μˆ˜ λ“± νŒŒμ΄μ¬μ—μ„œ μž‘μ„±ν•˜λŠ” λͺ¨λ“  λ‚΄μš©μ€ μ–΄λ– ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ“€μ΄λ‹€. λ‚˜λŠ” intλΌλŠ” 클래슀λ₯Ό λ§Œλ“  적이 μ—†λŠ”λ° μ™œ μ΄λ ‡κ²Œ μƒμ„±λœ 거냐 ν•˜λ©΄ νŒŒμ΄μ¬μ„ κ°œλ°œν•œ κ°œλ°œμžλ“€μ΄ κ°œλ°œμ„ ν•˜λ©΄μ„œ 자주 μ‚¬μš©ν•  것 같은 ν΄λž˜μŠ€λ“€μ„ 미리 λ§Œλ“€μ–΄ λ‘μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 

 

λ§Œμ•½ νŒŒμ΄μ¬μ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ 1을 μž‘μ„±ν–ˆλ‹€λ©΄ int 클래슀둜 λ§Œλ“  1을 λ‚˜νƒ€λ‚΄λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•œ 것이고, λΉˆλ¬Έμžμ—΄ ""을 μž…λ ₯ν–ˆλ‹€λ©΄, str 클래슀둜 λ§Œλ“  빈 λ¬Έμžμ—΄μ„ λ‚˜νƒ€λ‚΄λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•œ 것이닀. ν•¨μˆ˜λ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€. ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” 것도 λ‹€μ‹œ functionμ΄λΌλŠ” 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“œλŠ” 것이닀. 

 

즉, νŒŒμ΄μ¬μ— μžˆλŠ” λͺ¨λ“  것듀은 νŠΉμ • 클래슀의 μΈμŠ€ν„΄μŠ€λ‘œ μƒμ„±ν•˜λŠ” 것이고 μ΄λŸ¬ν•œ 이유 λ•Œλ¬Έμ— νŒŒμ΄μ¬μ„ 순수 객체 지ν–₯ 언어라고 ν•˜λŠ” 것이닀. 

 


 

μ§€κΈˆκΉŒμ§€ μž₯ν™©ν•˜κ²Œ 파이썬의 순수 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ 기초 λ‚΄μš©μ„ μ„€λͺ…ν•΄ λ³΄μ•˜λ‹€. μžμ„Ένžˆ μ„€λͺ…ν•˜λ‹€ λ³΄λ‹ˆ λ°˜λ³΅λ˜λŠ” λ‚΄μš©λ„ 많고 μ„€λͺ…이 λΆ€μ‘±ν•œ 뢀뢄도 μžˆλŠ” 것 κ°™λ‹€. κ·Έλž˜λ„ 이 글을 μ”€μœΌλ‘œμ¨ 슀슀둜 객체 지ν–₯의 κ°œλ…μ— λŒ€ν•΄ λ‹€μ‹œ 정리할 수 μžˆμ—ˆλ‹€. 이후 κ³΅λΆ€ν•˜λŠ” λ‚΄μš©μ— λŒ€ν•΄μ„œλŠ” μΆ”ν›„ ν¬μŠ€νŒ…ν•˜μ—¬ 정리해 보도둝 ν•˜κ² λ‹€. 

 

κ΄€λ ¨ 링크 : 

 

[파이썬] 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° / 클래슀 / λ©”μ„œλ“œ

2023.02.20 μ½”λ“œμž‡ ν•™μŠ΅λ‚΄μš© 정리 πŸ”Ž 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° πŸ“– 객체 (object) 속성과 ν–‰λ™μœΌλ‘œ 이루어진 쑴재 μš°λ¦¬κ°€ μ‚΄μ•„κ°€λ©΄μ„œ λ³΄λŠ” λͺ¨λ“  쑴재 ν˜„μ‹€μ— μ‘΄μž¬ν•˜λ“ , κ°€μƒμœΌλ‘œ μ‘΄μž¬ν•˜λ“  상관없이 속성

danyoujeong.tistory.com