객체지향 (class와 object)
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
3. 예제로 이해하는 객체지향 문법 (class와 object)¶
사각형 만들기¶
In [9]:
class Quadrangle:
pass
In [5]:
class SingleWord:
pass
In [6]:
dir (SingleWord)
Out[6]:
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
- class 도 변수/함수와 마찬가지로 유일한 이름을 지어줘야 함
- class 에 attribute/method를 아직 안넣은 상태이므로, 클래스에 내용이 없기에 임의로 pass 를 넣어 클래스 선언이 끝났음을 알려줌
- pass는 아무것도 수행하지 않는 문법, 임시 코드 작성시 주로 사용
- 클래스명은 PEP Coding Convention에 가이드된 대로 각 단어의 첫 문자를 대문자로 하는 CapWords 방식을 사용
클래스명(object) 로 쓸 수도 있음, 파이썬 3에서는 클래스명: 과 동일¶
In [9]:
class Quadrangle(object):
pass
In [10]:
dir(Quadrangle)
Out[10]:
만들어진 클래스로 객체를 만들 수 있음¶
- 객체도 변수/함수/클래스와 마찬가지로 유일한 이름을 지어줘야 함
- 함수와 마찬가지로 인수를 넣을 수 있음
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [11]:
square = Quadrangle()
In [12]:
dave = Quadrangle()
In [13]:
dave1 = Quadrangle()
In [14]:
dir(dave)
Out[14]:
In [8]:
# 객체 square는 Quadrangle의 인스턴스
type(square)
Out[8]:
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [16]:
type(dave)
Out[16]:
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]:
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [22]:
# width, height, color attribute 확인
dir(Quadrangle)
Out[22]:
In [23]:
square1 = Quadrangle()
square2 = Quadrangle()
In [19]:
dave_object = Dave()
객체의 attribute 접근하기¶
- 객체명.attribute명
In [25]:
class Quadrangle:
width = 0
height = 0
color = "black"
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [26]:
square1 = Quadrangle()
square2 = Quadrangle()
In [24]:
square1.color
Out[24]:
In [27]:
square2.color = 'red'
In [28]:
square1.color
Out[28]:
In [29]:
square2.color
Out[29]:
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [30]:
square1.height = 5
In [31]:
print (square1.height, square2.height)
초간단 연습1
* width, height, color 속성을 가진 사각형 클래스를 만들고 다음 4개의 객체 만들기 (객체 속성을 바꿔주시고, 출력도 해보세요)
- 직사각형 1개 객체 속성: width=10, height=5, color='red'
- 정사각형 1개 객체 속성: width=7, height=7, color='blue'
* 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)
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
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명
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [36]:
square = Quadrangle()
square.set_area(5, 5)
In [37]:
square.width
Out[37]:
method 호출시, 첫 번째 인자로 객체 자신이 넣어지기 때문에, self 를 method 첫 번째 인자로 항상 넣어야 함¶
In [38]:
square.get_area()
Out[38]:
초간단 연습2
* 위에서 작성한 Quadrangle 클래스를 기반으로 직사각형 1개 객체와 정사각형 1개 객체를 만들고, 각 사각형 너비 출력하기
- 직사각형2개 속성: width=10, height=5, color='red'
- 정사각형2개 속성: width=7, height=7, color='blue'
* 위에서 작성한 Quadrangle 클래스를 기반으로 직사각형 1개 객체와 정사각형 1개 객체를 만들고, 각 사각형 너비 출력하기
- 직사각형2개 속성: width=10, height=5, color='red'
- 정사각형2개 속성: width=7, height=7, color='blue'
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
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())
한발짝 더 나가보기!(심화 문제)
* 위에서 작성한 Quadrangle 클래스를 기반으로 직사각형 1개 객체와 정사각형 1개 객체를 만들되, 너비(width), 높이(height), 색상(color)를 한번에 설정할 수 있는 메서드만들고, 다음 값으로 각 객체의 속성값을 변경한 후, 사각형 너비와 색상도 함께 출력하기
- 직사각형2개 속성: width=10, height=5, color='red'
- 정사각형2개 속성: width=7, height=7, color='blue'
* 위에서 작성한 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())