λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ν•˜λ£¨κ³΅λΆ€

제 9μž₯ πŸ“’νŒŒμ΄μ¬(python) ꡬ쑰체와 ν΄λž˜μŠ€πŸ“’

ꡬ쑰체

클래슀 이전에 ꡬ쑰체λ₯Ό λ¨Όμ € κ³΅λΆ€ν•˜λŠ” μ΄μœ λŠ” ν΄λž˜μŠ€κ°€ Cμ–Έμ–΄μ˜ κ΅¬μ‘°μ²΄μ—μ„œ ν™•μž₯된 κ°œλ…μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

κ΅¬μ‘°μ²΄λž€ λ°°μ—΄κ³ΌλŠ” 달리 μΈλ±μŠ€κ°€ μ•„λ‹Œ "λ³€μˆ˜λͺ…"으둜 νŠΉμ • λŒ€μƒμ„ ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ

λ¬˜μ‚¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€.

좔상화

μΆ”μƒν™”λŠ” λŒ€μƒμ„ κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•˜λŠ”κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

이λ₯Όν…Œλ©΄ μ‚¬λžŒμ„ λ§Œμ•½ μ»΄ν“¨ν„°μ μœΌλ‘œ ν‘œν˜„ν•œλ‹€λ©΄ μ›λž˜λŒ€λ‘œλΌλ©΄ ν‘œν˜„ν•΄μ•Όν•˜λŠ” μš”μ†Œκ°€ λ„ˆλ¬΄λ§ŽμŠ΅λ‹ˆλ‹€.

κ·Έλ ‡μ§€λ§Œ ν”„λ‘œκ·Έλž¨μ μœΌλ‘œ ν‘œν˜„ μš”μ†Œλ₯Ό 쀄이고 μ€„μ—¬μ„œ ν•„μˆ˜μ μΈ μš”μ†Œλ§Œ ν‘œν˜„ν•˜λŠ”κ²ƒμ΄ κ°œλ°œμ— μœ λ¦¬ν•˜κΈ°μ—

좔상화λ₯Ό ν•˜κ²Œλ©λ‹ˆλ‹€.

좔상화 μ˜ˆμ‹œ

κ³ μ–‘μ΄μ˜ μš”μ†Œ : ν„Έ 색깔, μˆ˜μ—Ό λͺ¨μˆ˜, λͺΈλ¬΄κ²Œ, ν’ˆμ’…, 이름, λ‚˜μ΄, μ„ ν˜Έν•˜λŠ” 간식, 주인, μ§‘,

성별, κ±΄κ°•μƒνƒœ, 점프λ ₯, μšΈμŒμ†Œλ¦¬, λ°œν†±κΈΈμ΄......

동물병원에 λ“±λ‘ν•˜λŠ”λ°μ—λŠ” [주인, 이름, λ‚˜μ΄, ν’ˆμ’…](, 성별, λͺΈλ¬΄κ²Œ, ν‚€, 방문기둝)

κ°œλ°œμ‹œμ—λŠ” κ°œλ°œμžκ°€ κ³ λ €ν•  수 μžˆλŠ”(ν˜Ήμ€ κΈ°λŠ₯이 μš”κ΅¬ν•˜λŠ” μ΅œμ†Œν•œμ˜) μ‚¬ν•­λ§Œμ„ μ •μ˜ν•©λ‹ˆλ‹€.

- 클래슀(ꡬ쑰체) κ΅¬ν˜„ 문법
- μ„€κ³„λ„μ²˜λŸΌ μž‘μš©ν•˜κΈ° λ•Œλ¬Έμ— μ‹€μ œλ‘œ λ³€μˆ˜λ₯Ό μƒμ„±ν•˜κΈ° μ „κΉŒμ§€λŠ”
- μ•„λž˜ 적힌 μ½”λ“œλŠ” λ”°λ‘œ κΈ°λŠ₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

- μ‹€μ œλ‘œλŠ” 생성을 ν•΄ μ€˜μ•Ό κΈ°λŠ₯ν•©λ‹ˆλ‹€.

class Cat:
    name = ""
    age = 0
    cat_type = ""
    owner = ""


- 클래슀 생성을 μ €μž₯받은 λ³€μˆ˜λ₯Ό 객체(object) ν˜Ήμ€ μΈμŠ€ν„΄μŠ€(instance) 라고 ν˜ΈμΉ­ν•©λ‹ˆλ‹€.
cat1 = Cat()                print(cat1)
cat2 = Cat()                print(cat2)

<__main__.Cat object at 0x000001AFA8F5C9A0>
<__main__.Cat object at 0x000001AFA9B01A00>

 

print(cat1.name), print(cat1.age), print(cat1.cat_type), print(cat1.owner) 둜 κ΅¬ν˜„κ°€λŠ₯


ꡬ쑰체와 μ „μš© ν•¨μˆ˜

κΈ°μž…ν–ˆμ„λ•Œ ν•˜λ‚˜ν•˜λ‚˜ print() ꡬ문으둜 쑰사해야 ν•΄μ„œ λΆˆνŽΈν•©λ‹ˆλ‹€.

μ΄λŸ΄λ•Œ ν•¨μˆ˜λ₯Ό 선언해두면 νŽΈν•˜κ²Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

βœ… print("  :  %s,  :  %s,  : %s" %(μ €μž₯해놓은 λ³€μˆ˜))

 

νŠΉμ • ꡬ쑰체 μ „μš© ν•¨μˆ˜λ₯Ό 외뢀에 μ„ μ–Έν•  ν•„μš”κ°€ μžˆλŠ”κ°€?

νŠΉμ • κ΅¬μ‘°μ²΄μ—μ„œλ§Œ μ‚¬μš©ν•  ν•¨μˆ˜λ₯Ό, ꡳ이 외뢀에 λΉΌμ„œ ν˜Όλž€μ„ μ•ΌκΈ°ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” 결둠을 λ‚΄λ ΈμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ ν΄λž˜μŠ€μ—μ„œλŠ” 이제 λ³€μˆ˜μ™€ ν•¨κ»˜ ν•¨μˆ˜λ₯Ό 같은 μ†Œμ†μ„ μ„ μ–Έν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ 클래슀 내뢀에 μ„ μ–Έλœ ν•¨μˆ˜λ₯Ό κ°€λ¦¬μΌœ λ©”μ„œλ“œλΌκ³  λΆ€λ¦…λ‹ˆλ‹€.

클래슀 컴퓨터λ₯Ό λ§Œλ“€μ–΄ μ˜ˆμ‹œλ₯Ό λ§Œλ“€μ–΄λ³΄μž

 

 

class Computer:                                                                                                       

                                                                                                      
    cpu = ""  

    ram = 0                                                                                         
    ssd = 0                                                    
                                                                                      
    - λ©”μ„œλ“œλŠ” 기본적으둜 λŒ€λΆ€λΆ„μ˜κ²½μš° selfλ₯Ό νŒŒλΌλ―Έν„°λ‘œ μ„ μ–Έν•΄μ£Όμ…”μ•Όν•©λ‹ˆλ‹€.
    - λ³€μˆ˜ μ§€μΉ­μ‹œμ—λ„ self.λ³€μˆ˜λͺ…을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    def get_info(self):
        print("cpu : %s, ram : %sGb, ssd : %sGb" % (self.cpu, self.ram, self.ssd))
        
    def get_self_add(self):
        print(self)

c1.get_info()  πŸ‘‡

cpu : AMD라이젠7μ„ΈλŒ€, ram : 32Gb, ssd : 500Gb

μƒμ„±μž ν•¨μˆ˜

클래슀 내뢀에 __init__ μ΄λΌλŠ” λͺ…μΉ­μœΌλ‘œ μ„ μ–Έν•œ ν•¨μˆ˜λŠ” μƒμ„±μž ν•¨μˆ˜κ°€ λ©λ‹ˆλ‹€.

μƒμ„±μž ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄ μ‚¬μš©μžκ°€ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ λ°˜λ“œμ‹œ μž…λ ₯ν•΄μ•Ό ν•˜λŠ” μš”μ†Œλ₯Ό

κ°•μ œλ‘œ μž…λ ₯ν•΄μ•Όλ§Œ ν•˜λŠ” 상황을 λ§Œλ“€μ–΄μ€„ 수 μžˆμŠ΅λ‹ˆλ‹€.

βœ…def__init__(self ~~~,~~,~~)

   (β˜μ–Έλ”λ°” λ‘κ°œμ”©μž…λ‹ˆλ‹€)

     self.~~ = ~~

     self.~~ = ~~

문법

def get_info(self): 

        print("  :  %s,  :  %s,  : %s" %(μ €μž₯해놓은 λ³€μˆ˜))

 def meow(self):

    print("~~" *(self.~~//~))          

 

 

 

제 10μž₯ πŸ“’νŒŒμ΄μ¬(python) 상속과 μ˜€λ²„λΌμ΄λ”©πŸ“’

상속

상속은 λΆ€λͺ¨ 클래슀의 정보λ₯Ό ν™œμš©ν•΄ μžμ‹ 클래슀λ₯Ό μ΄λŒμ–΄λ‚΄λŠ”κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

문법은

class 클래슀λͺ…(λΆ€λͺ¨ν΄λž˜μŠ€):

       λ‚΄λΆ€ μ •μ˜

        ...

 

ν˜„μ‹€μ—μ„œμ˜ 상속과 λ§ˆμ°¬κ°€μ§€λ‘œ ν”„λ‘œκ·Έλž˜λ°μ˜ μƒμ†μ—μ„œλ„ λΆ€λͺ¨λŠ” μžμ‹μ—κ²Œ

μžμ‹ μ΄ κ°€μ§„ μš”μ†Œλ₯Ό λ¬Όλ €μ€λ‹ˆλ‹€.(λ³€μˆ˜, λ©”μ„œλ“œ)

ν˜„μ‹€κ³Ό λ‹€λ₯Έμ μ€ ν”„λ‘œκ·Έλž˜λ°μ˜ 상속은 μžμ‹μ΄ λΆ€λͺ¨λ₯Ό μ§€λͺ©ν•΄ 이뀄지며

λΆ€λͺ¨μͺ½μ—μ„œ 물렀받은 λ³€μˆ˜, λ©”μ„œλ“œ 및 μžμ‹μͺ½μ—μ„œ μƒˆλ‘œ μ •μ˜ν•œ λ³€μˆ˜, λ©”μ„œλ“œ

그리고 물렀받은 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜(μ˜€λ²„λΌμ΄λ”©)ν•΄ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

상속(inheritance)μ΄λž€ ν•˜λ‚˜μ˜ ν΄λž˜μŠ€κ°€ λ‹€λ₯Έ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό μ–»λŠ” 과정을 μ˜λ―Έν•œλ‹€.

μƒˆλ‘­κ²Œ ν˜•μ„±λœ ν΄λž˜μŠ€λŠ” μžλ…€ 클래슀(child class)라고 λΆ€λ₯΄κ³ , μžλ…€ ν΄λž˜μŠ€κ°€ νŒŒμƒλœ 클래슀λ₯Ό 

λΆ€λͺ¨ 클래슀(parent class)라고 λΆ€λ₯Έλ‹€.

μžλ…€ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜κ³  ν™•μž₯ν•  수 μžˆλ‹€.

λ‹€λ₯Έ 말둜, μžλ…€ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀둜 λΆ€ν„° λͺ¨λ“  속성과 λ©”μ„œλ“œλ₯Ό 상속 λ°›μ§€λ§Œ, λ˜ν•œ 

μžλ…€ 클래슀 μ•ˆμ—μ„œ κ³ μœ ν•œ 속성과 λ©”μ„œλ“œλ₯Ό λͺ…μ‹œν•΄μ€„ 수 μžˆλ‹€λŠ” 것이닀.

 

βœ…μƒμ† μ˜ˆμ‹œ

Personμ΄λΌλŠ” λΆ€λͺ¨ 클래슀λ₯Ό λ¨Όμ € λ§Œλ“€μ–΄ μ€μ‹œλ‹€.

홍길동 20 170

Student λΌλŠ” μžμ‹ν΄λž˜μŠ€λ₯Ό λ§Œλ“€κ³  majorλΌλŠ” μƒˆλ‘œμš΄&nbsp; λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. λ‚˜λ¨Έμ§€κ°’μ€ λΆ€λͺ¨ν΄λž˜μŠ€μ—μ„œ λ°›μ•„ μ˜΅λ‹ˆλ‹€.

- Studentλ₯Ό ν•˜λ‚˜ μƒμ„±ν•΄μ„œ Person처럼 print둜 λͺ¨λ“  λ³€μˆ˜μ— 값을 μ €μž₯ν•œ λ’€ μ°μ–΄λ³΄μ„Έμš”.
s1 = Student()
s1.name = "κ°€λ‚˜λ‹€"
s1.age = 21
s1.height = 163
s1.major = "컴퓨터과학"
print("이름 : %s, λ‚˜μ΄ : %s, ν‚€ : %scm, μ „곡 : %s" % (s1.name, s1.age, s1.height, s1.major))

이름 : κ°€λ‚˜λ‹€, λ‚˜μ΄ : 21, ν‚€ : 163cm, 전곡 : 컴퓨터과학

🀒였늘의 κ³ λ‚œ(difficulty) μ˜€λ²„λΌμ΄λ”©πŸ€’

μ˜€λ²„λΌμ΄λ”©μ΄λž€ λΆ€λͺ¨κ°€ λ¬Όλ €μ€€ λ©”μ„œλ“œλ₯Ό μžμ‹μͺ½μ—μ„œ κ³ μ³μ„œ μ“°λŠ”κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€

μœ„μ™€ 같이 λΆ€λͺ¨μͺ½μ—μ„œ 이미 νŠΉμ • λ©”μ„œλ“œκ°€ μƒμ„±λ˜μ—ˆμ§€λ§Œ, μžμ‹μͺ½μ—μ„œ μΆ”κ°€λœ 사항을

λ”°λ‘œ λ°˜μ˜ν•˜μ§€ λͺ»ν•œλ‹€λ˜μ§€ ν•˜λŠ” μ΄μŠˆκ°€ λ°œμƒν–ˆμ„λ•Œ

μžμ‹μͺ½μ—μ„œ 물렀받은 λ©”μ„œλ“œλ₯Ό κ³ μ³μ„œ ν˜„μž¬ 객체 상황에 맞게 μ“°λŠ”κ²ƒμ„ μ˜€λ²„λΌμ΄λ”©μ΄λΌκ³  ν•©λ‹ˆλ‹€.

방법은 μžμ‹μͺ½ 클래슀 섀계뢀뢄에 λΆ€λͺ¨μͺ½κ³Ό λ™μΌν•œ λ©”μ„œλ“œλ₯Ό μž‘μ„±ν•˜κ³ 

μ½”λ“œ λ‚΄μš©μ„ μƒˆλ‘­κ²Œ μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

βœ… λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© 

  1. μ„œλΈŒν΄λž˜μŠ€(μžμ‹)μ—μ„œ 슈퍼(λΆ€λͺ¨)클래슀λ₯Ό 호좜 ν›„ μ‚¬μš©
  2. λ©”μ†Œλ“œ 재 μ •μ˜ ν›„ μ‚¬μš©κ°€λŠ₯
  3. λΆ€λͺ¨ν΄λž˜μŠ€μ˜ λ©”μ†Œλ“œλ₯Ό 좔상화 ν›„ μ‚¬μš©κ°€λŠ₯ (ꡬ쑰적 μ ‘κ·Ό κ°€λŠ₯)
  4. ν™•μž₯ κ°€λŠ₯ + λ‹€ν˜•μ„±(λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ -> λΆ€λͺ¨μ—μ„œ λ©”μ†Œλ“œ ν•˜λ‚˜λ₯Ό λ§Œλ“€μ§€λ§Œ,μ‚¬μš©ν•˜λŠ” μžμ‹μ— 따라 λ‹€μ–‘ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€)
  5. 가독성 증가, 였λ₯˜κ°€λŠ₯μ„± κ°μ†Œ, λ©”μ†Œλ“œ 이름 μ ˆμ•½(λΆ€λͺ¨κ°€ λ©”μ†Œλ“œ 이름을 이미 μ •μ˜ν•΄λ†¨κΈ°μ—)