반응형
1. 클래스
■ 클래스와 객체
- 클래스 (class): 특정한 것을 만들기 위한 설계 도면
- 객체 (object): 클래스를 통해서 만들어진 것
- 클래스를 통해서 만들어진 객체들 간에 서로 전혀 영향을 주지는 않는다.
# Cookie라는 클래스 생성
class Cookie:
pass
# Cookie 클래스를 통해서 a, b 객체 생성
a = Cookie()
b = Cookie()
- 인스턴스: 클래스를 통해서 만들어진 객체를 뜻하는 말로 위의 예시에서 a는 객체이자 Cookie의 인스턴스이다.
■ 클래스 생성
- 클래스 구조
class ClassEx:
# self는 해당 함수를 호출한 객체가 전달된다.
def func(self, a, b):
self.a = a
self.b = b
'''
self는 객체 자신을 의미하기 때문에
self.a와 self.b는 해당 객체에 a와 b라는 객체를 생성하도록 한다.
'''
a = ClassEx()
a.func(1, 2) # 각각 1과 2라는 값을 가지는 a와 b 객체를 생성한다.
print(a.a) # 1
print(a.b) # 2
■ 생성자 (Constructor)
- __init__: 파이썬 메서드 이름으로 __init__을 사용하면 해당 메서드는 생성자가 된다.
class Class_Ex:
# 해당 클래스의 생성자 - a, b라는 객체를 생성하고 0으로 초기화한다.
def __init__(self):
self.a = 0
self.b = 0
■ 클래스의 상속 (inheritance)
- 다른 클래스의 기능을 물려받을 수 있도록 하는것
- 기존 클래스의 기능을 변경하지 않고 기능을 추가하거나 변경하려하는 경우에 사용한다.
# class {클래스 이름}({상속하려는 클래스}):
class Class_Child(Class_Parent):
...
■ 메서드 오버라이딩 (overriding)
- 부모 클래스에 있는 메서드와 동일한 이름으로 자식 클래스에서 메서드를 생성하여 기능을 덮어쓰기 하는 것
- 오버라이딩 하는 경우 해당 메서드의 이름으로 호출하는 경우 부모가 아닌 자식 클래스의 메서드가 실행된다.
■ 클래스 변수
- 각 객체가 아닌 클래스에 선언된 변수로 해당 클래스로 생성된 객체들은 해당 변수를 공유하게 된다.
- 클래스 변수의 값이 변경되면 모든 객체가 영향을 받게 된다.
class Class_Ex:
var = 'test'
a = Class_Ex()
b = Class_Ex()
print(a.var) # 'test'
print(b.var) # 'test'
Class_Ex.var = 'changed'
print(a.var) # 'changed'
print(b.var) # 'changed'
# 클래스 내부의 var와 객체들의 var 모두 같은 주소값을 가지게된다.
print(id(Class_Ex.var) == id(a.var) and id(a.var) == id(b.var)) # True
반응형
'프로그래밍언어 > Python' 카테고리의 다른 글
ch05. 파이썬 날개달기 (패키지, 예외처리) (0) | 2021.03.01 |
---|---|
ch05. 파이썬 날개달기 (모듈) (0) | 2021.02.28 |
ch04. 파이썬 프로그래밍 프로그램 입출력 (파일 읽고 쓰기) (0) | 2021.02.21 |
ch04. 파이썬 프로그래밍 프로그램 입출력 (사용자 입출력) (0) | 2021.02.20 |
ch04. 파이썬 프로그래밍 프로그램 입출력 (함수) (0) | 2021.02.20 |