온라인 강의 자료모음 기업교육

객체지향 (class와 object)

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
AI · 풀스택 · 데이터 로드맵 Dave Lee 한 강사가 설계부터 강의까지 모두
사이트 바로가기

3. 예제로 이해하는 객체지향 문법 (class와 object)

사각형 만들기

No description has been provided for this image

3.1. class 선언하기

객체 생성 전에 미리 class를 선언해야 함

In [9]:
class Quadrangle:
    pass
In [5]:
class SingleWord:
    pass
In [6]:
dir (SingleWord)
Out[6]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

본 자료 내용을 더 깊이 있게 다룬 온라인 강의를 제공합니다

자료구조와 알고리즘 (파이썬편)

자료구조, 알고리즘 정리, 코딩테스트 대비

  • class 도 변수/함수와 마찬가지로 유일한 이름을 지어줘야 함
  • class 에 attribute/method를 아직 안넣은 상태이므로, 클래스에 내용이 없기에 임의로 pass 를 넣어 클래스 선언이 끝났음을 알려줌
    • pass는 아무것도 수행하지 않는 문법, 임시 코드 작성시 주로 사용
  • 클래스명은 PEP Coding Convention에 가이드된 대로 각 단어의 첫 문자를 대문자로 하는 CapWords 방식을 사용

클래스명(object) 로 쓸 수도 있음, 파이썬 3에서는 클래스명: 과 동일

In [9]:
class Quadrangle(object):
    pass
In [10]:
dir(Quadrangle)
Out[10]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

만들어진 클래스로 객체를 만들 수 있음

  • 객체도 변수/함수/클래스와 마찬가지로 유일한 이름을 지어줘야 함
  • 함수와 마찬가지로 인수를 넣을 수 있음

데이터 분석/과학 전문가가 되기 위한 체계적인 로드맵입니다

가장 빠른 데이터 분석/과학 풀로드맵 (2025)

데이터 수집 → 분석 → 머신러닝/딥러닝 전과정

In [11]:
square = Quadrangle()
In [12]:
dave = Quadrangle()
In [13]:
dave1 = Quadrangle()
In [14]:
dir(dave)
Out[14]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']
In [8]:
# 객체 square는 Quadrangle의 인스턴스
type(square)
Out[8]:
__main__.Quadrangle

풀스택 개발자가 되기 위한 체계적인 로드맵입니다

가장 빠른 풀스택 개발 로드맵 (2025)

파이썬 → Flask → FastAPI → Flutter 전과정

In [16]:
type(dave)
Out[16]:
__main__.Quadrangle

3.2. attribute 넣어보기

  • 만들고자 하는 속성 생각해보기
    • width, height, color
In [21]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"
In [17]:
class Dave:
    data = 0
    name = 'dave'
In [18]:
dir(Dave)
Out[18]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'data',
 'name']

본 자료 내용을 더 깊이 있게 다룬 온라인 강의를 제공합니다

자료구조와 알고리즘 (파이썬편)

자료구조, 알고리즘 정리, 코딩테스트 대비

In [22]:
# width, height, color attribute 확인
dir(Quadrangle)
Out[22]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'color',
 'height',
 'width']
In [23]:
square1 = Quadrangle()
square2 = Quadrangle()
In [19]:
dave_object = Dave()

객체의 attribute 접근하기

  • 객체명.attribute명
In [25]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"

데이터 분석/과학 전문가가 되기 위한 체계적인 로드맵입니다

가장 빠른 데이터 분석/과학 풀로드맵 (2025)

데이터 수집 → 분석 → 머신러닝/딥러닝 전과정

In [26]:
square1 = Quadrangle()
square2 = Quadrangle()
In [24]:
square1.color
Out[24]:
'black'
In [27]:
square2.color = 'red'
In [28]:
square1.color
Out[28]:
'black'
In [29]:
square2.color
Out[29]:
'red'

풀스택 개발자가 되기 위한 체계적인 로드맵입니다

가장 빠른 풀스택 개발 로드맵 (2025)

파이썬 → Flask → FastAPI → Flutter 전과정

In [30]:
square1.height = 5
In [31]:
print (square1.height, square2.height)
5 0
초간단 연습1
* width, height, color 속성을 가진 사각형 클래스를 만들고 다음 4개의 객체 만들기 (객체 속성을 바꿔주시고, 출력도 해보세요)
- 직사각형 1개 객체 속성: width=10, height=5, color='red'
- 정사각형 1개 객체 속성: width=7, height=7, color='blue'
In [32]:
class Dave:
    width = 0
    height = 0
    color = ''

square1 = Dave()
square2 = Dave()

square1.width = 10
square1.height = 5
square1.color = 'red'

square2.width = 7
square2.height = 7
square2.color= 'blue'

print (square1.width, square1.height, square1.color)
print (square2.width, square2.height, square2.color)
10 5 red
7 7 blue

3.3 method 넣어보기

만들고자 하는 method 생각해보기1

  • 사각형 넓이 구하기

본 자료 내용을 더 깊이 있게 다룬 온라인 강의를 제공합니다

자료구조와 알고리즘 (파이썬편)

자료구조, 알고리즘 정리, 코딩테스트 대비

In [7]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"

    def get_area(self):
        return self.width * self.height

이 부분을 이해해야 함

  • 파이썬 method는 항상 첫 번째 파라미터로 self 사용
    • 인자가 필요없을 때에도 self는 사용
  • 클래스의 attribute는 내부에서 접근시, self.attribute명 으로 접근

만들고자 하는 method 생각해보기2

  • 사각형 width, height 설정하기
In [35]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"

    def get_area(self):
        return self.width * self.height
    
    def set_area(self, data1, data2):
        self.width = data1 
        self.height = data2

객체의 method 접근하기

  • 객체명.method명

데이터 분석/과학 전문가가 되기 위한 체계적인 로드맵입니다

가장 빠른 데이터 분석/과학 풀로드맵 (2025)

데이터 수집 → 분석 → 머신러닝/딥러닝 전과정

In [36]:
square = Quadrangle()
square.set_area(5, 5)
In [37]:
square.width
Out[37]:
5

method 호출시, 첫 번째 인자로 객체 자신이 넣어지기 때문에, self 를 method 첫 번째 인자로 항상 넣어야 함

No description has been provided for this image

In [38]:
square.get_area()
Out[38]:
25
초간단 연습2
* 위에서 작성한 Quadrangle 클래스를 기반으로 직사각형 1개 객체와 정사각형 1개 객체를 만들고, 각 사각형 너비 출력하기
- 직사각형2개 속성: width=10, height=5, color='red'
- 정사각형2개 속성: width=7, height=7, color='blue'

풀스택 개발자가 되기 위한 체계적인 로드맵입니다

가장 빠른 풀스택 개발 로드맵 (2025)

파이썬 → Flask → FastAPI → Flutter 전과정

In [41]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"

    def get_area(self):
        return self.width * self.height
    
    def set_area(self, data1, data2):
        self.width = data1 
        self.height = data2

square1 = Quadrangle()
square2 = Quadrangle()

square1.set_area(10, 5)
square2.set_area(7, 7)
square1.color = 'red'
square1.color = 'blue'

print(square1.get_area())
print(square2.get_area())
50
49
한발짝 더 나가보기!(심화 문제)
* 위에서 작성한 Quadrangle 클래스를 기반으로 직사각형 1개 객체와 정사각형 1개 객체를 만들되, 너비(width), 높이(height), 색상(color)를 한번에 설정할 수 있는 메서드만들고, 다음 값으로 각 객체의 속성값을 변경한 후, 사각형 너비와 색상도 함께 출력하기
- 직사각형2개 속성: width=10, height=5, color='red'
- 정사각형2개 속성: width=7, height=7, color='blue'
In [42]:
class Quadrangle:
    width = 0
    height = 0
    color = "black"

    def get_area(self):
        return self.width * self.height
    
    def set_area(self, data1, data2, data3):
        self.width = data1 
        self.height = data2
        self.color = data3

square1 = Quadrangle()
square2 = Quadrangle()

square1.set_area(10, 5, 'red')
square2.set_area(7, 7, 'blue')

print(square1.get_area())
print(square2.get_area())
50
49