클래스(Class)와 객체(Object)
Keyword
클래스의 정의
클래스(Class) 와 객체(Object)
객체(Object)와 인스턴스(instance)
메서드(method)
self
생성자(Constructor)
클래스의 정의
'클래스란 무엇인가?
파이썬은 객체 지향 언어(object-Oriented programming, OPP) 언어
클래스는 객체지향 프로그래밍의 기본 구성요소이다.
클래스는 연관있는 데이터와 기능을 묶은 객체를 만들기 위한 설계도
→ 같은 형태의 무언가를 만들어내기 위한 틀
🪔 객체 지향 프로그래밍이란?
객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나.
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립적인 단위, 즉 ‘객체’들의 모임으로 파악하고자 하는 것.
예제
사람들의 키, 몸무게를 입력받아 체질량 지수를 구하는 프로그램을 만들어보자
1. BMI 구하는 함수 만들기 2. 사람에 따라 이름/키/몸무게를 입력받아 변수로 저장하고 이 변수를 통해 값을 구하고 출력한다. |
def calc_bmi(height, weight):
height = height * 0.01
return weight / (height ** 2) # BMI 계산 함수 calc_bmi
person_1_name = 'John' # 키 몸무게 입력받아 변수로 저장
person_1_height = 185
person_1_weight = 85
person_2_name = 'Jack'
person_2_height = 170
person_2_weight = 80
person_1_bmi = calc_bmi(person_1_height, person_1_weight)
person_2_bmi = calc_bmi(person_2_height, person_2_weight)
print(f"{person_1_name}'s bmi = {person_1_bmi:.2f}")
print(f"{person_2_name}'s bmi = {person_2_bmi:.2f}")
> 사람 수가 많아지면, 변수가 늘어나고 관리도 힘들어질 것이다..
▶ 이 체질량 구하기 프로그램을 클래스로 만들어보자
1. Person이라는 클래스를 만든다. 2. 생성자(Constructor)와 메서드(Method)를 만든다. |
class Person:
def __init__(self, name, height, weight):
self.name = name
self.height = height
self.weight = weight
def bmi(self):
# 키는 입력받을 때 cm 단위로 입력받지만, 계산을 위해 m 단위로 변경
height = self.height * 0.01
return self.weight / (height ** 2)
def print_bmi(self):
print(f"{self.name}'s bmi = {self.bmi():.2f}")
# 객체 생성
person_1 = Person('John', 185, 85)
person_2 = Person('Jack', 170, 80)
person_1.print_bmi()
person_2.print_bmi()
> 메서드(Method) : 클래스 안에 있는 함수
생성자는 클래스가 객체화가 될 때(클래스 선언해줄 때), 그 때 최초로 1회 선언되는 함수
(생성자가 객체를 초기화해준다고 생각하면 된다.)
예제
1. HelloHealthy 라는 클래스를 만든다.
2. 생성자(constructor)와 메서드(method)를 만든다.
class HelloHealthy:
def __init__(self, name, height, weight):
self.name = name
self.height = height
self.weight = weight
def bmi(self):
height = self.height * 0.01
return self.weight / (height ** 2(
def print_bmi(self):
print(f"{self.name}'s bmi = {self.bmi():.2f}")
클래스(Class)와 객체(Object)
클래스는 연관있는 데이터와 기능을 묶은 객체를 만들기 위한 설계도
쿠키커터(틀) [클래스] > 쿠키 [객체]
객체와 인스턴스(Instance)
클래스로 만든 객체를 인스턴스라고 한다.
클래스와의 관계를 표현할 때 사용한다.
예)
아이스크림 모양 쿠키틀 ▶ 아이스크림 클래스
아이스크림 모양 쿠키틀로 만든 아이스크림 모양 쿠키(아이스크림 클래스의 인스턴스)
메서드(method)
객체 안에서 구현되는 함수로 'self'가 꼭 들어가야 한다.
self == 객체 자기자신
변수의 scope를 생각했을 때 self.~ 는 클래스 내에서 자유롭게 사용할 수 있다.
class Person:
def __init__(self, name, height, weight):
self.name = name
self.height = height
self.weight = weight
# bmi를 구하는 함수 (메서드)
def bmi(self):
# 키는 입력받을 때 cm 단위로 입력받지만, 계산을 위해 m 단위로 변경
height = self.height * 0.01
return self.weight / (height ** 2)
# bmi를 출력하는 함수 (메서드)
def print_bmi(self):
print(f"{self.name}'s bmi = {self.bmi():.2f}")
# 객체 생성
person_1 = Person('John', 185, 85)
person_2 = Person('Jack', 170, 80)
print(person_1.name)
print(person_1.height)
print(person_1.weight)
생성자(Constructor)
객체가 생성되는 시점에 한번 자동으로 호출되는 메서드
from datetime import datetime
class Say:
def __init__(self):
print(f"[{datetime.now()}] __init__() method called.")
def hello(self):
print(f"[{datetime.now()}] Hello!!")
print(f"[{datetime.now()}]", '*' * 10)
say = Say() # Say 클래스를 인스턴스화 한다. < 클래스로 객체를 만들어내는 부분
print(f"[{datetime.now()}]", '*' * 10)
say.hello() # say라는 객체(Say의 인스턴스) 안의 hello라는 함수(=메서드)를 호출
'Python' 카테고리의 다른 글
[Python] 문자열 포맷팅 (0) | 2022.08.21 |
---|---|
[Python] 한 줄로 코딩하기 : List comprehension (0) | 2022.08.21 |
리스트로 구현하는 자료구조 : Stack(스택)과 Queue(큐) (0) | 2022.08.13 |
[Sol] Powershell에서 tab키 기능 수정하기 (0) | 2022.08.01 |
[Jupyter] Pyspark로 SQL데이터 연동하기 (0) | 2022.07.29 |