[210712 TIL] Python

Choi Rimยท2021๋…„ 7์›” 12์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
11/20
post-thumbnail

Looping Dictionary

  • Dictionary ๋ฅผ ์‚ฌ์šฉํ•œ for ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” ๊ฐ ์š”์†Œ์˜ key ๊ฐ’๋งŒ return ํ•œ๋‹ค.
>>> hr_info = {"์ด๋ฆ„":"์ตœํ˜œ๋ฆผ", "๋‚˜์ด":23, "์ทจ๋ฏธ":"์ฝ”๋”ฉ"}
>>> for each_key in hr_info:
	print(each_key)

	
์ด๋ฆ„
๋‚˜์ด
์ทจ๋ฏธ

Looping Dictionary With Values Instead of Keys

  • value๊ฐ’์œผ๋กœ loopingํ•˜๋Š” ๋ฒ•
  • Dictionary๋Š” values() ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์†์„ฑ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด values() ํ•จ์ˆ˜๋Š” dictionary์˜ value ๋“ค์„ list ์˜ ํ˜•ํƒœ๋กœ return ํ•ด์ค€๋‹ค.
>>> hr_info = {"์ด๋ฆ„":"์ตœํ˜œ๋ฆผ", "๋‚˜์ด":23, "์ทจ๋ฏธ":"์ฝ”๋”ฉ"}
>>> for each_value in hr_info.values():
	print(each_value)

	
์ตœํ˜œ๋ฆผ
23
์ฝ”๋”ฉ

Looping Dictionary With Both Keys And Values

  • key์™€ value ๊ฐ’ ๋‘˜๋‹ค ๊ฐ€์ง€๊ณ  for ๋ฐ˜๋ณต๊ตฌ๋ฌธ์„ ์‹คํ–‰ ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • key์™€ value ๊ฐ’ ๋‘˜๋‹ค ๊ฐ€์ง€๊ณ  for ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” items() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
    • Dictionary์˜ items() ํ•จ์ˆ˜๋Š” key์™€ value๋ฅผ tuple๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
    • ๊ทธ๋Ÿฌ๋ฏ€๋กœ for ๋ฐ˜๋ณต๊ตฌ๋ฌธ์—์„œ 2๊ฐœ์˜ ๊ฐ’์„ ๋™์‹œ์— ๋ฐ›๊ฒŒ ๋œ๋‹ค.
>>> hr_info = {"์ด๋ฆ„":"์ตœํ˜œ๋ฆผ", "๋‚˜์ด":23, "์ทจ๋ฏธ":"์ฝ”๋”ฉ"}
>>> for each_key, each_value in hr_info.items():
	print(each_key, each_value)

	
์ด๋ฆ„ ์ตœํ˜œ๋ฆผ
๋‚˜์ด 23
์ทจ๋ฏธ ์ฝ”๋”ฉ

Nested Function

  • ๋‹ค๋ฅธ ๊ตฌ๋ฌธ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜๋„ ํ•จ์ˆ˜์•ˆ์— ์ค‘์ฒฉ๋˜์–ด ์„ ์–ธ๋  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰ ํ•จ์ˆ˜ ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.
>>> def parent_function():
	def child_function():
		print('this is a child function')
	child_function()

	
>>> parent_function()
this is a child function
  • ์ค‘์ฒฉ ํ•จ์ˆ˜์—์„œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜์•ˆ์—์„œ๋งŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€๋ชจ ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์ž์‹ ํ•จ์ˆ˜๋Š” ์‹คํ–‰ ๋  ์ˆ˜ ์—†๋‹ค.
  • ์œ„ ์ฝ”๋“œ์—์„œ๋Š” child_function()์€ parent_function ๋ฐ–์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค.

Why use nested function?

  • ์™œ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ• ๊นŒ?
    (1) ๊ฐ€๋…์„ฑ
    (2) Closure

Closure

  • ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ๋ถ€๋ชจ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋‚˜ ์ •๋ณด๋ฅผ ๊ฐ€๋‘์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ closure๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ๋ถ€๋ชจ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋‚˜ ์ •๋ณด๋ฅผ ์ค‘์ฒฉ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋ถ€๋ชจ ํ•จ์ˆ˜๋Š” ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
    • ๋ถ€๋ชจ ํ•จ์ˆ˜์—์„œ ๋ฆฌํ„ด ํ–ˆ์œผ๋ฏ€๋กœ ๋ถ€๋ชจ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋Š” ์ง์ ‘์ ์ธ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ถ€๋ชจ ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•œ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

Closure๋Š” ์–ธ์ œ ์‚ฌ์šฉ๋ ๊นŒ?

  • ์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ •๋ณด๋Š” ์ ‘๊ทผ์„ ์ œํ•œํ•˜์—ฌ ๋…ธ์ถœ์ด ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •์ด ๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • factory ํŒจํ„ด์„ ๊ตฌํ˜„ํ• ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
    • factory๋Š” ๊ณต์žฅ์ด๋ž€ ๋œป์ด๋‹ค.
      • ์ฆ‰ ๋ญ”๊ฐ€๋ฅผ ์ƒ์„ฑํ•ด๋‚ด๋Š” ํŒจํ„ด์ด๋‹ค.
      • ์ฃผ๋กœ ํ•จ์ˆ˜๋‚˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด๋‚ด๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    • Factory์—์„œ ๋ญ”๊ฐ€๋ฅผ ์ƒ์„ฑํ•ด ๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ค์ •๊ฐ’์ด ํ•„์š”ํ• ๊ฒƒ์ด๋‹ค.
      - ๊ทธ ์„ค์ •๊ฐ’์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์•„์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉด์„œ ํ•ด๋‹น ์„ค์ •๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋•Œ closure๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Decorator

  • ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๊ฐ•์ œ์ ์œผ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ ํ›„ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ฐ•์ œ์„ฑ ์ œ๊ณต
@is_paid_user
def jackpot_stock_information():
    return "๊ณ„์‹œ๊ฐ€ ๋‚ด๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ์‚ผ์„ฑ์ „์ž๋ฅผ ์‚ฌ์„ธ์š”!"
  • jackpot_stock_informationย ํ•จ์ˆ˜ ์ •์˜ ์œ„์—ย is_paid_userย ํ•จ์ˆ˜๊ฐ€ ๊ณจ๋ฑ…์ด ๋งˆํฌ (@) ์™€ ํ•จ๊ป˜ ๋‹ฌ๋ ค์žˆ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ทธ๋ž˜์„œย ์žฅ์‹, ์ฆ‰ย decoratorย ๋ผ๊ณ  ํ•˜๋Š”๊ฒƒ์ด๋‹ค.
    • ํ•จ์ˆ˜์œ„์— ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๊ณจ๋ฑ…์ด๋งˆํฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์žฅ์‹์ฒ˜๋Ÿผ ๋‹ฌ์•„๋†“๋Š”๊ฒƒ์ด๋‹ค.
  • ์ €๋ ‡๊ฒŒ decorator๋กœ ๋‹ฌ์•„๋†“์œผ๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋˜๊ธฐ ์ „์— ์žฅ์‹์œผ๋กœ ๋‹ฌ๋ฆฐ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ์ด ๋˜๊ณ  ๋‚œ ํ›„์— ๋ณธ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ์ด ๋œ๋‹ค.

Scope

  • Scope์€ ๋ฒ”์œ„๋ผ๋Š” ๋œป์ด๋‹ค.
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ scope์€ ์–ด๋– ํ•œ ๊ฐ์ฒด (๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ)๊ฐ€ ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.
    • ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋‹ค.
    • Python์—์„œ scope์€ ํ•ญ์ƒ ๊ฐ์ฒด๊ฐ€ ์„ ์–ธ๋œ ์ง€์ ์—์„œ ์œ„๋กœ๋Š” ์ƒ์œ„ ๊ฐ์ฒด ๊นŒ์ง€, ์•„๋ž˜๋กœ๋Š” ๋ชจ๋“  ํ•˜์œ„ ๊ฐ์ฒด๋“ค๊ณผ ๊ทธ ์•ˆ์—๊นŒ์ง€๊ฐ€ ๋ฒ”์œ„์ด๋‹ค.

Scope ๋ฒ”์œ„

  • Local Scope
  • Enclosed Scope
  • Global Scope
  • Built-in Scope

Local Scope

  • Local scope์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ํ˜น์€ ๊ฐ์ฒด๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํŠน์ • ๋ฒ”์œ„์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.
  • ์ฃผ๋กœ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๊ฐ€ local scope์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋“ค์€ ํ•ด๋‹น ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.

Enclosed Scope

  • Enclosing Scope๋Š” ์ค‘์ฒฉํ•จ์ˆ˜๊ฐ€ ์žˆ์„๋•Œ ์ ์šฉ๋˜๋Š” scope๋‹ค.
  • ๋ถ€๋ชจ ํ•จ์ˆ˜์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ค‘์ฒฉํ•จ์ˆ˜ ์•ˆ์—์„œ๋„ ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

Global Scope

  • Global scope์€ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธ๋œ๊ฒƒ์ด ์•„๋‹Œ ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.
  • ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋Š” ์„ ์–ธ๋œ ์ง€์ ๊ณผ ๋™์ผํ•œ level์˜ ์ง€์—ญ, ๊ทธ๋ฆฌ๊ณ  ๋” ์•ˆ์ชฝ์˜ ์ง€์—ญ๋“ค๊นŒ์ง€ ๋ฒ”์œ„๊ฐ€ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
  • global scope์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋“ค์€ ์„ ์–ธ๋œ ์ง€์ ์ด ํ•ด๋‹น ํŒŒ์ผ์—์„œ ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ์—์„œ ์„ ์–ธ๋˜๋ฏ€๋กœ ํ•ด๋‹น ํŒŒ์ผ์—์„œ ์„ ์–ธ๋œ ์ง€์  ์•„๋ž˜๋กœ๋Š” ๋‹ค ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ "Global" scope ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Built-in Scope

  • Built-in scope์€ scope์ค‘ ๊ฐ€์žฅ ๊ด‘๋ฒ”์œ„ํ•œ scope๋‹ค.
  • ํŒŒ์ด์ฌ์•ˆ์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š”, ํŒŒ์ด์ฌ์ด ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ์†์„ฑ๋“ค์ด built-in scope๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • built-in scope๋Š” ๋”ฐ๋กœ ์„ ์–ธ์ด ์—†์ด๋„ ๋ชจ๋“  ํŒŒ์ด์ฌ ํŒŒ์ผ์—์„œ ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, list๋“ฑ๊ณผ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์˜ element ์ด ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” len ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ built-in scope๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

Shadowing

  • ํŒŒ์ด์ฌ์€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ์ฐพ์„๋•Œ ๋‹ค์Œ ์ˆœ์„œ์˜ scope๋“ค ์•ˆ์—์„œ ์ฐพ๋Š”๋‹ค.
    • Local => Enclosing => Global => Built-in
    • ์ฆ‰ ๊ฐ€์žฅ ์ข์€ ์œ ํšจ๋ฒ”์œ„ ๋ถ€ํ„ฐ ์‹œ์ž‘ ํ•ด์„œ ๋„“์€ ๋ฒ”์œ„๋กœ ๋‚˜์•„๊ฐ€๋ฉฐ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ๋งŒ์ผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ scope์—์„œ ์„ ์–ธ์ด ๋˜๋ฉด ๋” ์ข์€ ๋ฒ”์œ„์— ์žˆ๋Š” ๋ณ€์ˆ˜(ํ˜น์€ ํ•จ์ˆ˜)๊ฐ€ ๋” ๋„“์€ ๋ฒ”์œ„์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌ๋Š” (shadowing)ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

class

  • ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ถ”์ƒํ™”๋œ ํ˜„์‹ค์˜ ๊ฐœ๋…์„ ๊ตฌ์ฒด์ ์ธ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
  • ๊ทธ ์ค‘ ์ฝ”๋”ฉ์—์„œ ์‚ฌ์šฉ๋˜๋Š” class ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ์˜๋ฏธ๋Š” "๋ถ€๋ฅ˜"์— ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.
    • "๋™์ผํ•œ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋Œ€์ƒ๋“ค์„ ์ผ์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ๋†“์€ ๊ฐˆ๋ž˜"
class Cat:
	def meow(self):
    	print("์•ผ์˜น ์•ผ์˜น")
# ํด๋ž˜์Šค ์ •์˜ํ•˜๊ธฐ       
        
cat1 = Cat()
cat1.meow
# ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜๊ธฐ .(๋งˆ์นจํ‘œ) ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
  • ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํด๋ž˜์Šค์—์„œ self๋ž€ ์ž๊ธฐ ์ž์‹ ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํด๋ž˜์Šค ๋‚ด์—์„œ ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ฉ”์„œ๋“œ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” self๋‹ค.

  • object = instance
    • object๋ฅผ ๋‹จ๋…์œผ๋กœ ์ง€์นญํ•  ๋•Œ๋Š” object๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ํด๋ž˜์Šค์™€ ์—ฐ๊ด€์ง€์–ด์„œ ๋งํ•  ๋•Œ๋Š” instance๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

class name

  • class ์ด๋ฆ„์€ ๊ฐ ๋‹จ์–ด์˜ ์•ž๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • ex) Car, Comedian
  • ๋งŒ์ผ ํ•œ๋‹จ์–ด ์ด์ƒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด ๋ฐ‘์ค„(underscore) ์—†์ด ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๋‹ค ๋ถ™์ด๋˜ ๊ฐ ๋‹จ์–ด์˜ ์•ž๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•ด์„œ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ฒŒ ๋œ๋‹ค.
    • ex) ScotchWishkey, SomeReallyLongClassName
class Cookie:
	pass

chococookie = Cookie()
  • ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ ํ›„ ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ํด๋ž˜์Šค์— ํ• ๋‹นํ•˜๋ฉด ํด๋ž˜์Šค๊ฐ€ ์‹ค์ฒดํ™”๋œ๋‹ค.
  • Car class๋ฅผ ์‹ค์ฒด(instance)ํ™” ํ•œ๊ฒƒ์ด chococookie๋ผ๋Š” ๊ฐ์ฒด(object) ์ธ๊ฒƒ์ด๋‹ค.
>>> class Cookie:
	def __init__(self, shape, color):
		self.shape = shape
		self.color = color
  • ํด๋ž˜์Šค์˜ ๊ณตํ†ต๋ถ„๋ชจ๋ฅผ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • init ๋ฉ”์†Œ๋“œ
    • ์•ž๋’ค๋กœ ๋ฐ‘์ค„ 2๊ฐœ๊ฐ€ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ special methods๋ผ๊ณ  ํ•œ๋‹ค.
    • init ๋ฉ”์†Œ๋“œ๋Š” class๊ฐ€ ์‹ค์ฒดํ™” ๋ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋‹ค.

  • init ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค๊ฐ€ ์‹ค์ฒดํ™” ๋ ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ์ด ๋œ๋‹ค.
  • init ๋ฉ”์†Œ๋“œ์˜ self ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํด๋ž˜์Šค๊ฐ€ ์‹ค์ฒดํ™”๋œ ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•˜๋ฉฐ, ํŒŒ์ด์ฌ์ด ์ž๋™์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.
  • init ๋ฉ”์†Œ๋“œ์˜ self ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•ญ์ƒ ์ •์˜๋˜์–ด์•ผ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋งจ ์ฒ˜์Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ •์˜ ๋˜์–ด์•ผ ํ•œ๋‹ค (๊ทธ๋ž˜์•ผ ํŒŒ์ด์ฌ์ด ์•Œ์•„์„œ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ)

Class Method

  • ํด๋ž˜์Šค์—์„œ init ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Method์™€ attribute(์†์„ฑ)์˜ ์ฐจ์ด๋Š” ๋ช…์‚ฌ์™€ ๋™์‚ฌ์˜ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ์†์„ฑ์€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ด๋ฆ„ ๋“ฑ์˜ ์ •ํ•ด์ง„ ์„ฑ์งˆ์ธ ๋ฐ˜๋ฉด์— ๋ฉ”์†Œ๋“œ๋Š” move, eat ๋“ฑ ๊ฐ์ฒด๊ฐ€ ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋– ํ•œ action๊ฐ™์€ ๋Š๋‚Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
profile
https://rimi0108.github.io/

0๊ฐœ์˜ ๋Œ“๊ธ€