(Python 4-1๊ฐ•) Python Object Oriented Programming

210803

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ์š”

  • Object-Oriented Programming, OOP

  • ๊ฐ์ฒด: ์‹ค์ƒํ™œ์—์„œ ์ผ์ข…์˜ ๋ฌผ๊ฑด

  • ์†์„ฑ(Attribute)๊ณผ ํ–‰๋™(Action)์„ ๊ฐ€์ง

  • ํŒŒ์ด์ฌ ์—ญ์‹œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด

ํด๋ž˜์Šค ์„ ์–ธ

  • class ์„ ์–ธ, object๋Š” python3์—์„œ ์ž๋™ ์ƒ์†

class SoccerPlayer(object):
# class : class ์˜ˆ์•ฝ์–ด
# SoccerPlayer : class ์ด๋ฆ„
# (object) : ์ƒ์†๋ฐ›๋Š” ๊ฐ์ฒด๋ช…
  • ๋ช…๋ช…๋ฒ•์ด ์กด์žฌ

    • ํŒŒ์ด์ฌ ํ•จ์ˆ˜/๋ณ€์ˆ˜๋ช…์—๋Š” snake_case๋ฅผ ์‚ฌ์šฉ

    • Class๋ช…์€ CamelCase๋ฅผ ์‚ฌ์šฉ

์ƒ์†

๋ถ€๋ชจํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ

๋‹คํ˜•์„ฑ

  • ๊ฐ™์€ ์ด๋ฆ„ ๋ฉ”์†Œ๋“œ์˜ ๋‚ด๋ถ€ ๋กœ์ง์„ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑ

  • Dynamic Typing ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ํŒŒ์ด์ฌ์—์„œ๋Š” ๊ฐ™์€ ๋ถ€๋ชจํด๋ž˜์Šค์˜

    ์ƒ์†์—์„œ ์ฃผ๋กœ ๋ฐœ์ƒํ•จ

class Animal:
    def __init__(self, name): # Constructor of the class
        self.name = name
    def talk(self): # Abstract method, defined by convention only
        raise NotImplementedError("Subclass must implement abstract method")

class Cat(Animal):
    def talk(self):
        return 'Meow!'
        
class Dog(Animal):
    def talk(self):
        return 'Woof! Woof!'

animals = [Cat('Missy'),
        Cat('Mr. Mistoffelees'),
        Dog('Lassie')]
for animal in animals:

    print(animal.name + ': ' + animal.talk())

๊ฐ€์‹œ์„ฑ

  • ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ ˆ๋ฒจ์„ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ

  • ๋ˆ„๊ตฌ๋‚˜ ๊ฐ์ฒด ์•ˆ์— ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๋ณผ ํ•„์š”๊ฐ€ ์—†์Œ

    1) ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์ •๋ณด ์ˆ˜์ •

    2) ํ•„์š” ์—†๋Š” ์ •๋ณด์—๋Š” ์ ‘๊ทผ ํ•  ํ•„์š”๊ฐ€ ์—†์Œ

    3) ๋งŒ์•ฝ ์ œํ’ˆ์œผ๋กœ ํŒ๋งคํ•œ๋‹ค๋ฉด? ์†Œ์Šค์˜ ๋ณดํ˜ธ

First-class objects

  • ์ผ๋“ฑํ•จ์ˆ˜ ๋˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด

  • ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด

  • ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅ + ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ

  • ํŒŒ์–ด์ฌ์˜ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ํ•จ์ˆ˜์ด๋‹ค

Inner function

  • ํ•จ์ˆ˜ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌ

def print_msg(msg):
    def printer():
        print(msg)
    printer()

print_msg("Hello, Python")
  • closures

    • inner function์„ return๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

def print_msg(msg):
    def printer():
        print(msg)
    return printer
    
another = print_msg("Hello, Python")
another()

Last updated

Was this helpful?