객체
객체는 객체 지향 프로그래밍의 가장 기본적인 단위이자 시작점이다.
객체 지향 개념의 가장 기본적인 전제는 실제 세계는 객체들로 구성되어있으며, 보여지는 모든 현상은 객체들간의 상호작용을 통해 발생한다는 것에서 출발한다.
여기서 객체란 모든 실재하는 대상을 가리킨다.
프로그램을 만들 때 우선 '어떤 데이터를 활용하는가?'를 생각하게 된다.
병원에서 사용할 업무 프로그램을 만든다면 의사, 간호사, 환자, 병실, 예약기록, 진료기록과 같은 데이터가 필요하다.
이처럼 여러가지 속성을 가질 수 있는 대상을 객체라고 부른다.
프로그래밍을 할때 객체와 관련된 코드를 분리 할 수 있도록 하는 것이 객체 지향 프로그래밍의 핵심이다.
이러한 객체 지향 프로그래밍을 더 편리하게 하기 위해 클래스(class)라는 구조를 사용하게 된다.
클래스 선언하기
클래스는 객체를 쉽고 편리하게 생성하기 위해 만들어진 구문이다.
class 클래스이름:
클래스 내용
위와 같이 클래스를 생성하며, 클래스 이름과 같은 함수(생성자)를 사용해 객체를 만든다.
인스턴스이름(변수이름) = 클래스이름() #생성자 함수
클래스를 기반으로 만들어진 객체를 인스턴스(instance)라고 부른다.
class Student:
pass
student = Student() # 생성자 함수
students = [
Student(), Student() ... # 인스턴스
]
생성자
클래스 이름과 같은 함수를 생성자(Constructor)라고 부른다.
클래스 내부에 __init__ 이라는 함수를 만들면 객체를 생성할 때 처리할 내용을 작성할 수 있다.
class 클래스이름:
def __init__(self, 추가적인매개변수):
pass
클래스 내부의 함수는 첫번째 매개변수로 반드시 self를 입력해야한다.
이 때 self는 '자기 자신'을 나타내는 딕셔너리이며, self가 가지고있는 속성과 기능에 접근할때는 self.<식별자> 형태로 접근한다.
class Student:
def __init__(self, name, korean, math, english):
self.name = name
self.korean = korean
self.math = math
self.english = english
students = [
Student("AAA", 87,98,88),
Student("BBB", 20,50,100),
Student("CCC", 60,50,20)
]
students[0].name
students[2].korean
메소드
클래스가 가지고있는 함수를 메소드(method)라고 부른다.
클래스 내부에 메소드를 만들때는 다음과 같이 사용하며 첫번째 매개변수로 self를 넣어야하는것에 유의하자.
class 클래스이름:
def 메소드이름(self, 추가적인매개변수):
pass
class Student:
def __init__(self, name, korean, math, english):
self.name = name
self.korean = korean
self.math = math
self.english = english
def get_sum(self):
return self.korean + self.math + self.english
def get_average(self):
return self.get_sum()/3
def to_string(self):
return "{}\t{}\t{}".format(self.name, self.get_sum(), self.get_average())
students = [
Student("AAA", 87,98,88),
Student("BBB", 20,50,100),
Student("CCC", 60,50,20)
]
print("이름", "총점", "평균", sep="\t")
for student in students:
print(student.to_string())
'Spec UP - Backend > 혼자 공부하는 파이썬' 카테고리의 다른 글
chap_07. 모듈 (0) | 2023.12.19 |
---|---|
chap_06-1. 구문오류와 예외 (0) | 2023.12.12 |
chap_05-3. 함수 고급 (0) | 2023.11.13 |
chap_05-2. 함수의 활용 (0) | 2023.11.13 |
chapter_05-1. 함수 만들기 (0) | 2023.10.27 |
댓글