26_Sep_2021 πŸ°μ—˜λ¦¬μŠ€ AI νŠΈλž™ TIL: Python II

μœ ν™˜μ΅Β·2021λ…„ 9μ›” 27일
0

기초 μžλ£Œν˜•

λ¬Έμžμ—΄κ³Ό 리슀트 ν™œμš©

list.pop(): 인덱슀 i의 μ›μ†Œλ₯Ό μ œκ±°ν•˜κ³ , μ§€μš΄ μ›μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

my_list = [1,2,3,4,5]
print(my_list.pop(0)) # 0번째 μ›μ†Œ λ°˜ν™˜
print(my_list.pop()) # λ§ˆμ§€λ§‰ μ›μ†Œ λ°˜ν™˜

seq.count(d): μ‹œν€ΈμŠ€ λ‚΄λΆ€μ˜ 자료 d의 개수λ₯Ό λ°˜ν™˜ν•œλ‹€.

my_seq = [2,2,2,4,4]
print(my_seq.count(2)) # 2의 총 개수 3 λ°˜ν™˜

str.split(c): cλ₯Ό κΈ°μ€€μœΌλ‘œ λ¬Έμžμ—΄μ„ μͺΌκ°œμ–΄ 리슀트 λ°˜ν™˜

my_str = '1 2 3 4 5'
print(my_str.split()) # ['1','2','3','4','5'] 곡백 κΈ°μ€€
element = 'Na,Mg,Al,Si'
print(element.split(',')) # ['Na','Mg','Al','Si'] , κΈ°μ€€

리슀트둜의 λ³€ν™˜μ€ μ›μ†Œμ˜ μ‚­μ œ, μ‚½μž…, μ°Έμ‘°κ°€ μš©μ΄ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€

str.join(list): str을 κΈ°μ€€μœΌλ‘œ 리슀트λ₯Ό ν•©μ³μ„œ λ¬Έμžμ—΄μ„ λ°˜ν™˜

my_list = ['a','p','p','l','e']
print(''.join(my_list)) # apple
friend = ['Pat','Mat']
print('&'.join(friend)) #Pat&Mat

νŠœν”Œ

μ—¬λŸ¬ 자료λ₯Ό λ‹΄λŠ” λŒ€ν‘œμ μΈ μžλ£Œν˜•μ€ λ¦¬μŠ€νŠΈμ΄λ‚˜, 값이 λ°”λ€” μœ„ν—˜μ΄ μžˆλ‹€.
νŠœν”Œ(Tuple): μ—¬λŸ¬ 자료λ₯Ό ν•¨κ»˜ 담을 수 μžˆλŠ” μžλ£Œν˜•μ΄λ©°, ()둜 λ¬Άμ–΄μ„œ ν‘œν˜„ν•œλ‹€.

νŠΉμ§•:
1. +μ—°μ‚°μžλ‘œ νŠœν”Œκ³Ό νŠœν”Œμ„ μ—°κ²°ν•˜κ³ , *μ—°μ‚°μžλ‘œ λ°˜λ³΅ν•œλ‹€.
2. 자료의 μΆ”κ°€, μ‚­μ œ, 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€. ν•œλ²ˆ λ§Œλ“€μ–΄μ§€λ©΄ κ³ μ •.

λ”•μ…”λ„ˆλ¦¬

짝이 μžˆλŠ” 집합 μžλ£Œν˜•μ„ λ”•μ…”λ„ˆλ¦¬λΌκ³  λΆ€λ₯Έλ‹€.
λ”•μ…”λ„ˆλ¦¬λŠ” {} μ€‘κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ„œ ν‘œν˜„ν•˜λ©°, ν•œμŒμ˜ μžλ£Œν˜•μ„ 가진닀.
{key:value}의 ν˜•μ‹: keyλ₯Ό μ•Œλ©΄ valueλ₯Ό μ•Œ 수 μžˆλŠ” ꡬ쑰λ₯Ό ν•˜κ³  μžˆλ‹€.

key: μ—΄μ‡ μ²˜λŸΌ 자료λ₯Ό κΊΌλ‚Ό 수 μžˆλŠ” 도ꡬ
value: λ”•μ…”λ„ˆλ¦¬μ—μ„œ key둜 κΊΌλ‚Έ 자료

Dictionary[key]:

  • λ”•μ…”λ„ˆλ¦¬μ—μ„œ 자료λ₯Ό κΊΌλ‚΄κΈ°

    person = {'name':'Michael', 'age':10}
    print(person['name']) # Michael 
    print(person['age']) # 10		μΈλ±μ‹±ν•˜κ³ λŠ” 차이가 μžˆλ‹€.
    	dic   key
  • λ”•μ…”λ„ˆλ¦¬μ—μ„œ 자료λ₯Ό μΆ”κ°€ν•˜κΈ°

    person = {'name':'Michael', 'age':10}
    person['hometown'] = Seoul
    #dic	 key	     value
  • λ”•μ…”λ„ˆλ¦¬μ˜ μ›μ†Œ μ‚­μ œ

    person = {'name':'Michael', 'age':10}
    del person['age']
    print(person) # {'name':'Michael'}

λ”•μ…”λ„ˆλ¦¬μ˜ νŠΉμ§•

  • keyλŠ” λ³€ν•  수 μ—†λŠ” μžλ£Œν˜• : λ¦¬μŠ€νŠΈλŠ” μ•ˆλ˜κ³ , νŠœν”Œμ€ ν‚€λ‘œ κΈ°λŠ₯ν•  수 있음
    datas = {[1,2,3]: 'Alphabet'} #Error
    datas = {(1,2,3): 'Number'} #No Error

ν•¨μˆ˜μ™€ λ©”μ„œλ“œ

ν•¨μˆ˜

ν•¨μˆ˜λž€?

ν”„λ‘œκ·Έλž˜λ°μ˜ κΈ°λ³Έ 틀은 μ»΄ν“¨ν„°μ—κ²Œ 정보λ₯Ό μž…λ ₯ν•˜κ³ , 이λ₯Ό 톡해 컴퓨터가 μž‘μ—…μ„ ν•œ ν›„, 컴퓨터가 ν•œ μž‘μ—… κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” 과정을 κ±°μΉœλ‹€.

μ΄λŸ¬ν•œ 일련의 μž‘μ—…μ„ ν•˜λŠ” μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄, ν•˜λ‚˜λ‘œ 묢을 ν•„μš”κ°€ 생겼고, μ—¬κΈ°μ„œ λ‚˜νƒ€λ‚œ κ°œλ…μ΄ λ°”λ‘œ ν•¨μˆ˜μ΄λ‹€.

ν•¨μˆ˜λŠ” 즉, νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ(λ“€μ˜ λͺ¨μž„)이닀.

μ§€κΈˆκΉŒμ§€ μ‚¬μš©ν•˜μ˜€λ˜ ν•¨μˆ˜μ˜ 예:
  • len() : 자료λ₯Ό λ„£μœΌλ©΄ κ·Έ 자료의 길이λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
  • int() : 자료λ₯Ό λ„£μœΌλ©΄ μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
  • str() : 자료λ₯Ό λ„£μœΌλ©΄ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

이처럼 ν•¨μˆ˜λŠ” μž…λ ₯ν•œ 자료λ₯Ό λ°›μ•„, 일련의 μž‘μ—…μ„ ν•œ ν›„ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•΄ μ£ΌλŠ” κΈ°λŠ₯을 ν•œλ‹€.

ν•¨μˆ˜μ˜ μ’…λ₯˜

  • λ‚΄μž₯ν•¨μˆ˜
    파이썬 κ°œλ°œμžλ“€μ΄ 이미 λ§Œλ“€μ–΄ λ‘” ν•¨μˆ˜μ΄λ‹€.

λŒ€ν‘œμ μΈ 예:

  • input() - 자료λ₯Ό μž…λ ₯ν•˜λŠ” ν•¨μˆ˜
  • print() - 자료λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜
  • max() - μ‹œν€€μŠ€ 자료의 μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • min() - μ‹œν€€μŠ€ 자료의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • sum() - 숫자 μ›μ†Œλ‘œ 이루어진 μ‹œν€€μŠ€ 자료의 ν•©
  • len() - μ‹œν€€μŠ€ 자료의 길이λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜

μ‚¬μš©μž 지정 ν•¨μˆ˜
μ‚¬μš©μžκ°€ μ—¬λŸ¬ μ½”λ“œλ₯Ό λ¬Άμ–΄μ„œ μƒˆλ‘œ λ§Œλ“  ν•¨μˆ˜

def plusDouble(a,b):
	c = a+b
    return 2*c
print(plus(3,4)) # 14
  • ν•¨μˆ˜ λ§Œλ“€κΈ°
    def(ine) μ •μ˜ν•˜λ‹€λΌλŠ” 의미의 ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ ν•¨μˆ˜λ₯Ό μ •μ˜

  • ν•¨μˆ˜μ˜ μž…λ ₯
    λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ ν•¨μˆ˜ λ‚΄λΆ€λ‘œ 값을 전달: def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜):

  • ν•¨μˆ˜ 속 λͺ…λ Ή μž‘μ„±
    같은 λ“€μ—¬μ“°κΈ°λ₯Ό 톡해 λͺ…λ Ή μž‘μ„±

    def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜):
    -- λ“€μ—¬μ“°κΈ° ν›„ λͺ…λ Ή
    --
    --
  • ν•¨μˆ˜μ˜ λ°˜ν™˜(좜λ ₯)
    return을 μ΄μš©ν•΄μ„œ ν•¨μˆ˜ μ™ΈλΆ€λ‘œ 값을 전달: return λ°˜ν™˜κ°’

    λ°˜ν™˜μ΄ ν•„μš”ν•œ μ΄μœ λŠ”
    ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μΌμ–΄λ‚œ 일은 ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. λ”°λΌμ„œ, λ°˜ν™˜(return)을 톡해 μ™ΈλΆ€λ‘œ 전달해야 ν•œλ‹€.

μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜

ν•¨μˆ˜λŠ” ν•¨μˆ˜ μŠ€μ½”ν”„λ₯Ό 가지고 있기 λ•Œλ¬Έμ—, ν•¨μˆ˜ μ•ˆμ—μ„œ μΌμ–΄λ‚œ 일은 ν•¨μˆ˜ 밖에 영ν–₯을 λΌμΉ˜μ§€ μ•ŠλŠ”λ‹€.

μ „μ—­ λ³€μˆ˜: μ–΄λ””μ„œλ“ μ§€ μ‚¬μš©ν•  수 μžˆλŠ” λ³€μˆ˜. ν•¨μˆ˜ λ°–μ—μ„œ μ •μ˜λœ λ³€μˆ˜μ΄λ‹€.

x = 'Hi!'
def my_func():
	print(x)
my_func() # Hi!
print(x) # Hi!

지역 λ³€μˆ˜: νŠΉμ • ꡬ문(forλ¬Έ, ν•¨μˆ˜...)μ•ˆμ—μ„œ μ •μ˜ν•œ λ³€μˆ˜
λ³€μˆ˜λ₯Ό μ •μ˜ν•œ λ²”μœ„μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯!

def my_func():
	x = 'Hi?'
    print(x)
my_func() # Hi?
print(x) # Error

λ©”μ„œλ“œ

νŠΉμ • μžλ£Œμ— λŒ€ν•΄ νŠΉμ • κΈ°λŠ₯을 ν•˜λŠ” μ½”λ“œ (ν•¨μˆ˜μ™€ λ‹€λ₯΄λ‹€)

ν•¨μˆ˜vsλ©”μ„œλ“œ

  • ν•¨μˆ˜λŠ” νŠΉμ • κΈ°λŠ₯을 ν•œλ‹€. (λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•΄ 자료λ₯Ό 전달)

μ˜ˆμ‹œ

len(my_list)
sum(my_list)
min(my_list)
  • λ©”μ„œλ“œλŠ” νŠΉμ • μžλ£Œμ™€ μ—°κ΄€ 지어 κΈ°λŠ₯을 ν•œλ‹€. (자료 뒀에 .을 찍어 μ‚¬μš©)
my_list.sort()
my_list.pop()
my_list.clear()

λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€

λͺ¨λ“ˆμ΄λž€?

κ°œλ°œμ„ ν•˜λ©΄μ„œ μ½”λ“œμ˜ 길이가 μ—„μ²­ 길어지기에, λͺ¨λ“  ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ‹€.

μ΄λŸ¬ν•œ ν˜„μƒμ„ λ°©μ§€ν•˜κ³ , μ½”λ“œλ₯Ό 더 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄, λˆ„κ΅°κ°€ λ§Œλ“€μ–΄λ†“μ€ ν•¨μˆ˜, λ³€μˆ˜λ“±μ„ ν™œμš©ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆμ΄ λ“±μž₯ν•˜μ˜€λ‹€.

λͺ¨λ“ˆμ€ νŠΉμ • λͺ©μ μ„ 가진 ν•¨μˆ˜, 자료의 λͺ¨μž„이닀.

λͺ¨λ“ˆ 뢈러였기

import ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄μ„œ λͺ¨λ“ˆμ„ μ‚¬μš©ν•œλ‹€.

λͺ¨λ“ˆ μ‚¬μš©λ²• ν™•μΈν•˜κΈ°

λͺ¨λ“ˆ 속 μ‚¬μš©ν•˜λ €λŠ” ν•¨μˆ˜/λ³€μˆ˜μ˜ μ‚¬μš©λ²• 확인: λͺ¨λ“ˆλ‘œ 뢈러온 ν•¨μˆ˜λ‚˜ λ³€μˆ˜ μœ„μ— μ»€μ„œλ₯Ό 두어 μ„€λͺ…을 μ°Έκ³ ν•œλ‹€.

λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°

.(dot)을 μ“΄ 후에 λͺ¨λ“ˆ 속 ν•¨μˆ˜/λ³€μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

import
print(random.randrange(0,2)) # 0이상 2미만 수 쀑 μž„μ˜λ‘œ 좜λ ₯

λͺ¨λ“ˆ λ§Œλ“€κΈ°

슀슀둜 μ›ν•˜λŠ” λ‚΄μš©μ΄ λ‹΄κΈ΄ λͺ¨λ“ˆ μ œμž‘μ΄ κ°€λŠ₯ν•˜λ‹€. .py ν™•μž₯자 파일(파이썬 파일)둜 λ§Œλ“€ 수 μžˆλ‹€.

my_module.py => import my_module

1) pyνŒŒμΌμ„ 생성 ν›„, ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό λ§Œλ“ λ‹€.

#cal.py
def plus(a,b):
	c = a+b
	return c  
import cal
print(cal.plus(3,4))

importλ₯Ό μ΄μš©ν•œλ‹€λ©΄, μ–΄λ””μ„œλ‚˜ κ°€μ Έλ‹€ μ‚¬μš©ν•  수 μžˆλ‹€.

λͺ¨λ“ˆμ˜ ν™œμš©

math: μˆ˜ν•™ 연산을 λ„μ™€μ£ΌλŠ” λͺ¨λ“ˆ

import math
#math λͺ¨λ“ˆ 뢈러였기
print(math.pi) # 3.141592... #무리수
print(math.e) # 2.718281...	#μžμ—°μƒμˆ˜

random: λžœλ€ν•œ 숫자λ₯Ό 선택해 μ£ΌλŠ” ν•¨μˆ˜λ“€μ΄ λ‹΄κΈ΄ λͺ¨λ“ˆ

import random
#random λͺ¨λ“ˆ 뢈러였기
print(random.randrange(1,11))
#1λΆ€ν„° 10κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό 좜λ ₯

λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€μ˜ 차이점

νŒ¨ν‚€μ§€λž€?

λͺ¨λ“ˆμ„ 폴더(Directory)둜 κ΅¬λΆ„ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ” 것이닀.

νŒ¨ν‚€μ§€μ˜ ν•„μš”μ„±?

λͺ¨λ“ˆμ„ 계측적, λΆ„λ₯˜λ³„μœΌλ‘œ νŽΈλ¦¬ν•˜κ²Œ 관리할 수 있게 λœλ‹€.

νŒ¨ν‚€μ§€ 속 λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λŠ” 법

  1. importλ₯Ό μ΄μš©ν•΄μ„œ 폴더λ₯Ό 뢈러였고, ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€.
    import user(νŒ¨ν‚€μ§€).cal(λͺ¨λ“ˆ)
    print(cal.plus(3,4))
  2. from -importλ₯Ό μ‚¬μš©
    ν•¨μˆ˜/λ³€μˆ˜ μ‚¬μš©μ‹œ .λ₯Ό 쓰지 μ•Šμ•„λ„ 됨.
    from user.cal import plus (ν•¨μˆ˜λ₯Ό 뢈러옴)
    print(plus(3,4)) 
    #같은 ν•¨μˆ˜κ°€ 이미 μ‘΄μž¬ν•œλ‹€λ©΄, 뢈러올 λ•Œ 좩돌 λ°œμƒ μœ„ν—˜ 있음

객체

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • 반볡문으둜 같은 μž‘μ—…ν•˜λŠ” λ‹€μˆ˜μ˜ λͺ…λ Ή λ¬ΆκΈ°
  • ν•¨μˆ˜λ‘œ νŠΉμ • λͺ…λ Ή λ¬ΆκΈ°
  • λͺ¨λ“ˆλ‘œ ν•¨μˆ˜ λ¬ΆκΈ°

μœ„μ™€ 같이 λ‹€μˆ˜λ₯Ό λ¬ΆλŠ” κ°œλ…μ΄ λ„μž…λœ μ΄μœ λž€ 무엇인가?
μ •λ‹΅: μ½”λ“œλ₯Ό 보닀 효율적으둜 λ§Œλ“€κΈ° μœ„ν•¨μ΄λ‹€!

κ·ΈλŸ¬λ‚˜, κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  λ°œμƒν•˜λŠ” λ¬Έμ œμ μ€ 더 큰 규λͺ¨μ˜ ν”„λ‘œμ νŠΈλ₯Ό 진행 μ‹œ, μ½”λ“œκ°€ λ„ˆλ¬΄ κΈΈμ–΄μ§€λŠ” ν˜„μƒμ΄μ—ˆλ‹€.
μœ„μ— λ„μž…λœ μ•„μ΄λ””μ–΄λ§ŒμœΌλ‘œλŠ” 문제λ₯Ό ν•΄κ²°ν•  수 μ—†μ—ˆλ‹€.

μ—¬κΈ°μ„œ λ°œμƒμ˜ μ „ν™˜μ΄ 이루어져, μ½”λ“œλ₯Ό μ§œλŠ” 방법둠을 생각해낸닀.

컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ 객체와 객체의 μƒν˜Έμž‘μš©μ΄λΌλ©΄ μ–΄λ–¨κΉŒ?

κ°μ²΄λž€?

μ„±μ§ˆ(μΈμŠ€ν„΄μŠ€)κ³Ό ν•  수 μžˆλŠ” 행동(λ©”μ„œλ“œ)이 λ‹΄κΈ΄ μžλ£Œμ΄λ‹€.

Instance(attribute): 기쑴의 λ³€μˆ˜
name: Alexander
age: 26
residence: Austin
Hobby: Coding

Method(Action): 기쑴의 ν•¨μˆ˜
eat()
exercise()
sleep()
chill()

μœ„μ™€ 같은 μš”μ†Œλ₯Ό ν•˜λ‚˜λ‘œ 묢은 κ°œλ…μ΄ 객체이닀.

ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€

ν΄λž˜μŠ€λŠ” 객체λ₯Ό λ§Œλ“€ 수 μžˆλŠ” 틀이라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€.

μ‚¬λžŒ 객체λ₯Ό λ§Œλ“ λ‹€κ³  ν•˜λ©΄:

μ„±μ§ˆ

  • 이름
  • λ‚˜μ΄
  • 거주지
  • μ·¨λ―Έ

행동

  • λ¨ΉκΈ°
  • μš΄λ™ν•˜κΈ°
  • 잠자기
  • μ·¨λ―Έν™œλ™ν•˜κΈ°

λ“±μ˜ μš”μ†Œλ“€μ΄ ν•„μš”ν•˜λ‹€.

μ΄λŸ¬ν•œ 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ”, 객체의 μ„±μ§ˆκ³Ό 행동을 ν‹€μ²˜λŸΌ 찍어낼 수 μžˆλŠ” ν΄λž˜μŠ€κ°€ ν•„μš”ν•œ 것이닀.


ν•„λ“œ(Field): 객체가 가지고 μžˆλŠ” μ„±μ§ˆμ„ κ°€λ¦¬ν‚€λŠ” 말이닀.

class Human:
    name = 'Alex'
    age = 27

λ©”μ„œλ“œ(Method)

class Human:
	def exercise(self): 
    	#self : λ©”μ„œλ“œλΌλ©΄ κ°€μ Έμ•Όν•˜λŠ” 첫번째 λ§€κ°œλ³€μˆ˜
    	    print('pull-ups!')

λ§€κ°œλ³€μˆ˜λ‘œ λ„˜κ²¨μ€€ selfλŠ” λ©”μ„œλ“œκ°€ κ°€μ Έμ•Ό ν•  첫 λ§€κ°œλ³€μˆ˜μ΄λ©°, 객체 자기 μžμ‹ μ„ 가리킨닀. λ‹€λ₯Έ 이름도 μƒκ΄€μ—†μœΌλ‚˜, κ΄€μŠ΅μ μœΌλ‘œ self둜 λͺ…λͺ…
*주의: return 값이 μžˆλ‹€λ©΄ λ„˜κ²¨λ°›λŠ” λ§€κ°œλ³€μˆ˜κ°€ μžˆμ–΄μ•Ό 함.


ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€μ˜ 관계

μΈμŠ€ν„΄μŠ€(Instance)

클래슀(ν‹€)둜 찍어낸 객체λ₯Ό μ˜λ―Έν•œλ‹€.

  • 이름 -> Alexander
  • λ‚˜μ΄ -> 26μ„Έ
  • 거주지 -> 남양주
  • μ·¨λ―Έ -> λͺ¨κ°μ½”
    λ“±μ˜ μ„±μ§ˆμ„ 가지고 μžˆλ‹€.

λ”°λΌμ„œ, 주둜 ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€μ˜ 관계에 λΉ„μœ λ˜λŠ” μ˜ˆλŠ”, λΆ•μ–΄λΉ΅ ν‹€(클래슀)와 λΆ•μ–΄λΉ΅(μΈμŠ€ν„΄μŠ€)의 관계가 μžˆλ‹€.

λΆ•μ–΄λΉ΅ ν‹€(Class)은 λΆ•μ–΄λΉ΅μ΄λΌλŠ” λͺ¨μ–‘을 작고, λΆ•μ–΄λΉ΅(Instance)은 클래슀의 ν‹€λ‘œ μƒμ„±λœ μΈμŠ€ν„΄μŠ€ 만의 κ³ μœ ν•œ μ„±μ§ˆμ„ 가지기 λ•Œλ¬Έμ΄λ‹€.

μΈμŠ€ν„΄μŠ€ λ§Œλ“€κΈ°

μΈμŠ€ν„΄μŠ€ λͺ… = 클래슀 λͺ…()의 κ³΅μ‹μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€.
μΈμŠ€ν„΄μŠ€μ˜ λ³€μˆ˜: μΈμŠ€ν„΄μŠ€ λͺ….λ³€μˆ˜λ‘œ 뢈러올 수 μžˆλ‹€.

alexander = Human()
alexander.name 
# alex
alexander.age 
# 26

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

μΈμŠ€ν„΄μŠ€.λ©”μ„œλ“œ()의 κ³΅μ‹μœΌλ‘œ 뢈러올 수 μžˆλ‹€.

alexander = Human()
alexander.exercise() 
# pull-ups

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄ λ„μž…λœ 이유?

상속, λ‹€ν˜•μ„±, μΊ‘μŠν™”λ“±μ˜ κ°œλ…μ„ 톡해 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„ μš©μ΄ν•˜κ²Œ ν•˜λ©°, ν˜„μ‹€ 세계λ₯Ό 더 잘 ν‘œν˜„ν•  수 있기 λ•Œλ¬Έμ΄λ‹€.

포Oλͺ¬ κ²Œμž„μ˜ 예
Charmanderκ°€ Squirtleμ—κ²Œ 'Blaze'기술둜 10의 데미지λ₯Ό μž…ν˜”λ‹€.

이λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것은 쉽지 μ•Šμ§€λ§Œ, 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄ μΆœλ™ν•œλ‹€λ©΄ μ–΄λ–¨κΉŒ?

객.체.지.ν–₯.


ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€ 생성

클래슀의 생성

  • 포Oλͺ¬μ΄ κ°€μ Έμ•Ό ν•  νŠΉμ§•?: name, hp, type
  • 포Oλͺ¬μ΄ ν•  수 μžˆλŠ” λŠ₯λ ₯?: skills

클래슀 μ„ μ–Έ, λ³€μˆ˜μ™€ λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μƒμ„±ν•œλ‹€.

Class Poxxmon:
	p_name = ''
    p_hp = 0
    p_type = ''

    def skill(self):
    	pass

Charmander Class 생성

  • Charmander의 νŠΉμ§•?: name: 'Charmander', sex_ratio: '87.5 : 12.5', attribute: 'fire'
  • Charmander의 λŠ₯λ ₯?: Blaze

Poxxmon 클래슀λ₯Ό μƒμ†ν•˜λŠ” Charmander 클래슀 생성

class Charmander(Poxxmon):
    p_name = 'Charmander'
    p_hp = 50
    p_type = 'Fire'
   
    def skill(self):
    	print('Blaze!')

Charmander Instance 생성

Charmander Class둜 찍어낸 charxx Instance

charxx = Charmander()
charxx.skill() # Blaze!
print(charxx.p_hp) # 50

λ‹€ν˜•μ„±

같은 λͺ¨μ–‘μ˜ μ½”λ“œκ°€ λ‹€λ₯Έ 역할을 ν•˜λŠ” 것

class 동물:
    닀리 = 0
   
    def κ±·κΈ°(self):
        return ''
       
class 개(동물):
    닀리 = 4			#같은 λ³€μˆ˜ λ‹€λ¦¬μ˜ 값을 4둜 μˆ˜μ •
   
    def κ±·κΈ°(self):
        return 'μ‚΄λž‘μ‚΄λž‘'	#κ±·κΈ° λ©”μ„œλ“œμ˜ λ°˜ν™˜ 값을 μˆ˜μ •

class 인간(동물):
    닀리 = 2			#같은 λ³€μˆ˜ λ‹€λ¦¬μ˜ 값을 2둜 μˆ˜μ •
   
    def κ±·κΈ°(self):
        return 'λšœλ²…λšœλ²…'	#κ±·κΈ° λ©”μ„œλ“œμ˜ λ°˜ν™˜ 값을 μˆ˜μ •

λΉ„κΈ€ = 개()
철수 = 인간()
print(철수.κ±·κΈ°())	# 'λšœλ²…λšœλ²…'
print(개.κ±·κΈ°())	        # 'μ‚΄λž‘μ‚΄λž‘'
#같은 λ©”μ„œλ“œλΌλ„ 객체에 따라 λ‹€λ₯Έ 값을 λ°˜ν™˜ν•œλ‹€ => 

νŒŒμ΄μ¬μ—μ„œμ˜ 객체 μ μš©λ²•

νŒŒμ΄μ¬μ—μ„œλŠ” 객체 λ‹¨μœ„λ‘œ 정보λ₯Ό κ΄€λ¦¬ν•˜λ©°, κ°μ²΄λŠ” λ‹€μŒμ˜ 속성을 가지고 μžˆλ‹€.

  • κ°’(value): 객체에 λ‹΄κΈ΄ λ‚΄μš©
  • μœ ν˜•(type): 객체의 μ’…λ₯˜
nums = [1,2,3]

print(nums,type(nums))

nums.append(4)		#nums 리슀트 객체에 λ©”μ„œλ“œ μ‚¬μš©
print(nums)

파이썬의 listλ‚˜ number, dictionary에 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμ—ˆλ˜ 것은 νŒŒμ΄μ¬μ—μ„œ μžλ£ŒλŠ” λͺ¨λ‘ 객체이기 λ•Œλ¬Έμ΄λ‹€.

λ§ˆμ§€λ§‰ ν•œ 쀄평:

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ μ‰¬μš΄ 것 κ°™μœΌλ©΄μ„œλ„ μ‹¬μ˜€ν•˜λ„λ‹€.

profile
μ‚¬μš©μžμ˜ 편의λ₯Ό 더 μƒκ°ν•˜κ³  νŽΈμ•ˆν•œ UI/UX κ°œλ°œμ„ κΏˆκΎΈλŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ§€λ§μƒμž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€