μƒˆμ†Œμ‹

Languages/Python

[Python] 클래슀 μ•Œμ•„λ³΄κΈ°(λ³€μˆ˜, λ©”μ†Œλ“œ,클래슀)

  • -
λ°˜μ‘ν˜•
β€» ν΄λž˜μŠ€μ™€ κ΄€λ ¨λœ μš©μ–΄

 Class

    β–Άλ™μΌν•œ λͺ©μ μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ €μž₯곡간과 κΈ°λŠ₯을 ν•˜λ‚˜λ‘œ 묢은 것  Encapsulation(μΊ‘μŠν™”)

 

• class Object : ν΄λž˜μŠ€μ™€ λ™μΌν•œ 의미둜 μ‚¬μš©ν•˜λŠ”λ° νŠΉμ • 클래슀λ₯Ό ꡬ체적으둜 지 μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

• Object(Instance) : 클래슀λ₯Ό μžλ£Œν˜•μœΌλ‘œ ν•΄μ„œ μƒμ„±λœ 객체

• Method : 클래슀 μ•ˆμ— μ •μ˜λœ ν•¨μˆ˜

• Member & Static variable : 클래슀 μ•ˆμ— μ •μ˜λœ λ³€μˆ˜

• Attribute(속성) : 클래슀 μ•ˆμ— μžˆλŠ” λͺ¨λ“  것

• Inheritance(상속) : ν•˜μœ„ ν΄λž˜μŠ€κ°€ μƒμœ„ 클래슀의 λͺ¨λ“  속성을 λ¬Όλ €λ°›λŠ” 것

• Super Class(Base Class) : λ‹€λ₯Έ 클래슀의 μƒμœ„ 클래슀

• Sub Class(Derived Class) : λ‹€λ₯Έ ν΄λž˜μŠ€λ‘œλΆ€ν„° 속성을 λ¬Όλ €λ°›λŠ” 클래슀

• Multiple Inheritance(닀쀑상속) : 2개 μ΄μƒμ˜ ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ†λ°›λŠ” 것

• Polymorphism(λ‹€ν˜•μ„±) : λ™μΌν•œ μ½”λ“œκ°€ 상황에 따라 λ‹€λ₯΄κ²Œ λ°˜μ‘ν•˜λŠ” 것

 

 

좜처 : 학ꡐ μˆ˜μ—… μ‹œκ°„ ppt자료

 

 

ν΄λž˜μŠ€μ™€ 객체

 

– λ˜‘κ°™μ€ 무엇인가λ₯Ό κ³„μ†ν•΄μ„œ λ§Œλ“€μ–΄λ‚Ό 수 μžˆλŠ” 섀계도면

– 1개의 ν΄λž˜μŠ€λŠ” 무수히 λ§Žμ€ 객체λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

>>> a = Bread() >>> b = Bread()

 

Object

 

– ν΄λž˜μŠ€μ— μ˜ν•΄ λ§Œλ“€μ–΄μ§„ ν”Όμ‘°λ¬Ό

– κ°μ²΄λ³„λ‘œ 독립적인 성격을 κ°–λŠ”λ‹€

– λ™μΌν•œ ν΄λž˜μŠ€μ— μ˜ν•΄ μƒμ„±λœ 객체듀은 μ„œλ‘œμ—κ²Œ μ „ν˜€ 영ν–₯을 주지 μ•ŠλŠ”λ‹€.

 

 

 

 

ν΄λž˜μŠ€λŠ” λ‹€μŒκ³Ό 같이 class ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ μ •μ˜.

 

 

클래슀의 μ½”λ“œλΈ”λ‘μ€ λ³€μˆ˜μ™€ λ©”μ†Œλ“œ(Method)둜 이루어짐.

• λ©”μ†Œλ“œ(Method)

- 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ κΈ°λŠ₯에 λŒ€μ‘ν•˜λŠ” 파이썬 μš©μ–΄

- ν•¨μˆ˜μ™€ 거의 λ™μΌν•œ μ˜λ―Έμ΄μ§€λ§Œ λ©”μ†Œλ“œλŠ” 클래슀의 λ©€λ²„λΌλŠ” 점이 닀름

 

• λ³€μˆ˜

- 클래슀 λ³€μˆ˜ : 클래슀 내뢀에 μ„ μ–Έλœ λ³€μˆ˜

- μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ : selfκ°€ λΆ™μ–΄ μžˆλŠ” λ³€μˆ˜

 

 

 

 

λ©”μ†Œλ“œ 생성

- λ©”μ†Œλ“œλ₯Ό 클래슀 내뢀에 μ„ μ–Έν•  λ•ŒλŠ” 첫번째 λ§€κ°œλ³€μˆ˜λŠ” 무쑰건 ν˜„μž¬ 클래슀의 객체 κ°€ λ˜μ–΄μ•Ό 함

- κ΄€μŠ΅μ μœΌλ‘œ self λΌλŠ” 단어λ₯Ό 이용

- λ‘λ²ˆμ§Έ λ§€κ°œλ³€μˆ˜λΆ€ν„°λŠ” μ‚¬μš©μžκ°€ μ •μ˜ν•  수 있음 예) def add(self, num):

 

λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 방법

- 클래슀 이름을 μ΄μš©ν•œ 호좜(μ–Έλ°”μš΄λ“œ 호좜) -> ν΄λž˜μŠ€μ΄λ¦„.λ©”μ†Œλ“œμ΄λ¦„(μΈμŠ€ν„΄μŠ€μ΄λ¦„, λ§€κ°œλ³€μˆ˜)

- μΈμŠ€ν„΄μŠ€ 이름을 μ΄μš©ν•œ 호좜(λ°”μš΄λ“œ 호좜) -> μΈμŠ€ν„΄μŠ€μ΄λ¦„.λ©”μ†Œλ“œμ΄λ¦„(λ§€κ°œλ³€μˆ˜)

- 클래슀 λ‚΄λΆ€μ—μ„œ μžμ‹ μ˜ ν΄λž˜μŠ€μ— μ†ν•œ λ©”μ†Œλ“œλ₯Ό 호좜 -> self.λ©”μ†Œλ“œμ΄λ¦„(λ§€κ°œλ³€μˆ˜)

 

예제)  λ©”μ†Œλ“œ 예제

class Student:
    def start(self):
        print('μ•ˆλ…•ν•˜μ„Έμš”')
    def printName(self,name):
        print('이름은 {0} μž…λ‹ˆλ‹€'.format(name))

stu = Student()
Student.start(stu)
stu.printName('홍길동')

 

.format μ΄λž€?

https://brownbears.tistory.com/421
μœ„ μ‚¬μ΄νŠΈ 참고해보기 (λ¬Έμžμ—΄ ν¬λ§·νŒ… 방식 쀑 ν•˜λ‚˜μž„)


 

클래슀 λ‚΄μ˜ λ³€μˆ˜ 생성

• λ©”μ†Œλ“œ μ™ΈλΆ€μ—μ„œ μ„ μ–Έν•˜λ©΄ 클래슀 λ³€μˆ˜

- 클래슀 내뢀에 1개만 λ§Œλ“€μ–΄μ§€λ©° 클래슀 μ΄λ¦„μœΌλ‘œ μ ‘κ·Όν•  수 있고 객체 μ΄λ¦„μœΌλ‘œ 도 μ ‘κ·Όν•΄μ„œ μ‚¬μš©ν•  수 있게 λ©λ‹ˆλ‹€. - 클래슀 λ³€μˆ˜λŠ” 클래슀 이름을 μ΄μš©ν•΄μ„œ μˆ˜μ •ν•˜λ©΄ 클래슀 λ³€μˆ˜κ°€ μˆ˜μ •λ˜μ§€λ§Œ 객체 μ΄λ¦„μœΌλ‘œ μˆ˜μ •ν•˜λ©΄ 객체 각각의 데이터가 λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€.

 

• λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œ self와 ν•¨κ»˜ μ„ μ–Έλ˜λ©΄ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

- 각 객체 내뢀에 각각 λ§Œλ“€μ–΄μ§€λ©° 객체 μ΄λ¦„μœΌλ‘œλ§Œ μ ‘κ·Όν•΄μ„œ μ‚¬μš©ν•  수 있음

- λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œ self.κ³Ό ν•¨κ»˜ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ κ·Έ λ³€μˆ˜λŠ” λ©”μ†Œλ“œμ˜ 지역변 μˆ˜κ°€ 됨

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.