1. 객체
students = [
{"name": "윤인성", "korean": 87, "math": 98, "english": 88, "science": 95},
{"name": "연하진", "korean": 92, "math": 98, "english": 96, "science": 98},
{"name": "구지연", "korean": 76, "math": 96, "english": 94, "science": 90},
{"name": "나선주", "korean": 98, "math": 92, "english": 96, "science": 92},
{"name": "윤아린", "korean": 95, "math": 98, "english": 98, "science": 98},
{"name": "윤명월", "korean": 64, "math": 88, "english": 92, "science": 92}
]
예를 들어 딕셔너리로 학생을 표현하고 이를 리스트로 묶어 학생을 표현했다고 하면, 이렇게 여러 가지 속성을 가질 수 있는 대상을 객체라고 한다. 즉, 속성을 가질 수 있는 모든 것을 객체라고 한다.
- 파이썬은 객체 지향 언어로 클래스라는 것을 기반으로 객체를 만들고, 그러한 객체를 우선으로 생각해서 프로그래밍을 한다.
- 추상화 : 프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것
2. 클래스 선언하기
- 클래스를 선언하면 이후 클래스 이름과 같은 함수(생성자)를 이용해서 객체를 만들 수 있다.
- 인스턴스 이름(변수 이름) = 클래스 이름() # 여기서 클래스 이름()이 생성자 함수이다.
- 클래스를 기반으로 만들어진 객체를 인스턴스라고 부른다.
# 클래스 선언 기본 형태
class 클래스 이름 : ## 클래스 첫글자는 대문자
클래스 내용
# 객체 만들기 기본 형태
인스턴스 이름(번수 이름) = 클래스 이름() # 여기서 클래스 이름() 이 생성자 함수
# 예시
# 클래스 선언
class Student :
pass
# 객체 만들기
student = Student()
# 객체 리스트
students = [Student(), Student(), Student()]
3. 생성자와 소멸자
생성자
- 클래스 이름과 같은 함수를 생성자라고 한다.
- 클래스 내부에 __init__라는 함수를 만들면 객체를 생성하면서 처리할 내용을 작성할 수 있다.
- 클래스 내부의 함수의 첫 매개인자로는 반드시 self를 입력해야 한다. 이때 self는 자기 자신을 나타내는 객체라고 생각하면 된다.
- self가 가지고 있는 속성과 기능에 접근할 때는 self.식별자 형태로 접근한다.
cf) _함수명_ 형태의 함수는 특수한 경우에 자동으로 호출되는 함수이다.
# 기본 형태
class 클래스 이름:
def __init__(self, 추가적 매개변수):
pass
# 예시
# 클래스 선언
class Student:
def __init__(self, name, korean, math):
self.name = name
self.korean = korean
self.math = math
student = [Student("윤인성",85,95), Student("연하진",90,93), Student("구지연",85,90)]
# 접근 방법
student[0].name
student[0].math
소멸자
프로그램이 종료될 때 자동적으로 소멸자가 호출된다.
# 기본 형태
class 클래스 이름:
def __del__(self):
pass
# 예시
class Student:
def __init__(self, name, korean, math):
self.name = name
self.korean = korean
self.math = math
def __del__(self):
print("{}-파괴되었다.".format(self.name))
student = [Student("윤인성",85,95), Student("연하진",90,93), Student("구지연",85,90)]
4. 메소드
클래스가 가지고 있는 함수를 메소드라고 한다. 반드시 첫 번째 매개변수로 self를 넣어야 한다.
# 기본 형태
class 클래스 이름:
def 메소드 이름(self, 추가적 매개변수):
pass
# 예시
class Student:
def __init__(self, name, korean, math):
self.name = name
self.korean = korean
self.math = math
def get_sum(self):
return self.korean + self.math
def get_avg(self):
return self.get_sum() / 2 # ()는 자동적으로 self
student = [Student("윤인성",85,95), Student("연하진",90,93), Student("구지연",85,90)]
for i in student:
print("{}의 평균 : {}".format(i.name,i.get_avg()))
cf) self
# 클래스 메소드라고 가정
def setdata(self,first,second):
self.first =first
self.second = second
a.setdata(4,2)
setdata 메소드에는 매개변수가 3개인데 왜 2개의 값만 전달할까? 그 이유는 a.setdata(4,2) 처럼 호출하면 setdata 메소드의 첫 번째 매개변수 self에는 setdata 메소드를 호출한 객체 a가 자동으로 전달되기 때문이다.
5. 정리
- 객체 : 속성을 가질 수 있는 모든 것
- 객체 지향 프로그래밍 언어 : 객체를 기반으로 프로그램을 만드는 프로그래밍 언어
- 추상화 : 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
- 클래스 : 객체를 쉽고 편리하게 생성하기 위해 만들어진 구문
- 인스턴스 : 클래스 기반으로 생성한 객체
- 생성자 : 클래스 이름과 같은 인스턴스를 생성할 때 사용하는 함수
- 메소드 : 클래스가 가진 함수
'Python > 혼자 공부하는 파이썬' 카테고리의 다른 글
[Python] 8-2. 클래스의 추가적인 구문 (0) | 2022.11.01 |
---|---|
[Python] 7-2. 외부 모듈 및 만들기 (1) | 2022.10.31 |
[Python] 7-1. 표준 모듈 (0) | 2022.10.31 |
[Python] 6. 예외 처리 (0) | 2022.10.28 |
[Python] 5-2. 함수 고급 (0) | 2022.10.27 |