파이썬 OOP

Jmnote (토론 | 기여)님의 2020년 2월 27일 (목) 19:55 판 (Jmnote님이 파이썬 객체지향 프로그래밍 문서를 파이썬 OOP 문서로 이동했습니다)

1 개념

Object-Oriented Programming (OOP)
객체지향 프로그래밍
  • 객체 생성은 키워드 class를 사용

2 객체 생성

  • class키워드를 사용하여 Person라는 객체 틀을 만듬
  • Person라는 객체 생성 틀을 가지고 JOHN, JMNOTE를 각각 생성함
Python
Copy
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def print_name(self):
        print self.name

    def print_age(self):
        print self.age

JOHN = Person('john', 30)
JMNOTE = Person('jmnote', 20)

JOHN.print_name()   # john
JOHN.print_age()    # 30
JMNOTE.print_name() # jmnote
JMNOTE.print_age()  # 20
→__init__와 print_name의 self는 자기 자신을 말함
print_name를 살펴보면, JOHN.print_name()이 실행 될 때 self는 JOHN, JMNOTE.print_name()이 실행 될 때 self는 JMNOTE가 됨

3 상속

  • 상속은 하나의 클래스에서 또 다른 클래스의 정의를 그대로 상속하여 가져옴
Python
Copy
class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age 

    def print_name(self):
        print(self.name)

class programmer(person): # person 객체 상속
    def printJob(self):
        print('programmer')

class editor(person): # person 객체 상속
    def printJob(self):
        print('editor')

jmnote = programmer('jmnote', 20) 
jmnote.print_name() #jmnote
jmnote.printJob() #programmer
john = editor('john', 30) 
john.print_name() #john
john.printJob() #editor:
→ programmer와 editor 클래스에서 person 이라는 슈퍼클래스를 상속하였음

4 객체 스타일

Python3
  • New-style
Python
Copy
class Person(object)
→ 명시적으로 object
  • New-style
Python
Copy
class Person:
→ object를 명시하지 않았지만 object는 자동 상속됨
Python2
  • New-style
Python
Copy
class Person(object)

→ python2에서 New-style로 class를 정의 하려면 명시적으로 object를 상속해 주어야함

  • Old-style
Python
Copy
class Person:
→ python2에서 명시적으로 object를 상속해 주지 않을 경우 Old-style 클래스로 정의됨

5 참고