오답노트
[Python3] 클래스(Class) 본문
Class
객체 지향 프로그래밍에서 객체를 만들어내기 위한 설계도와 같다.
Class 선언
class test_class:
lst = ["test_class"]
def __init__(self,a,b,c):
self.var_a = a;
self.var_b = b;
self.var_c = c;
def append(self):
test_class.lst.append(self.var_a)
test_class.lst.append(self.var_b)
test_class.lst.append(self.var_c)
def print(self):
print(self.var_a)
print(self.var_b)
print(self.var_c)
print(test_class.lst)
위 코드는 test_class 라는 클래스를 선언하는 코드이다.
class 클래스명 : 으로 선언하며
아래 줄 들여쓰기 부터 해당 클래스의 선언부이다.
Class 생성자
클래스의 생성자를 정의할 떄는 def __init__ () 함수를 선언한다.
이 때 위 코드에서 인자를 보면 self라는 인자가 있는데, self는 파이썬에서 약속된 문법이며, 클래스의 인스턴스를 뜻한다.
Class의 속성 종류
클래스에는 인스턴스 속성과 클래스 속성이 존재한다.
클래스 속성은 굳이 생성자가 호줄되지 않더라도, 클래스를 선언했을 때 값이 입력되어 있다. (입력을 안했으면 없음)
하지만 인스턴스 속성은 생성자를 호출하지 않으면 인스턴스 속성은 생성되지 않는다.
class test_class:
lst = ["test_class"]
def __init__(self,a,b,c):
self.var_a = a;
self.var_b = b;
self.var_c = c;
def append(self):
test_class.lst.append(self.var_a)
test_class.lst.append(self.var_b)
test_class.lst.append(self.var_c)
def print(self):
print(self.var_a)
print(self.var_b)
print(self.var_c)
print(test_class.lst)
print("test_class.lst : ",test_class.lst)
test = test_class(1,"a","test")
print("test.print() : ")
test.print()
위 코드의 결과는 아래와 같다.
사진 2-2 와 같이 test_class의 생성자를 호출하지 않더라도 클래스 속성은 호출할 수 있다.
하지만 인스턴스 속성은 test_class에 대한 변수를 만들고, 생성자를 호출해야만 한다.
Class 상속
class test_class:
lst = ["test_class"]
def __init__(self,a,b,c):
self.var_a = a;
self.var_b = b;
self.var_c = c;
def append(self):
test_class.lst.append(self.var_a)
test_class.lst.append(self.var_b)
test_class.lst.append(self.var_c)
def print(self):
print(self.var_a)
print(self.var_b)
print(self.var_c)
print(test_class.lst)
class test_child(test_class):
def __init__(self,a,b,c,d,e):
self.var_a = a
self.var_b = b
self.var_c = c
self.var_d = d
self.var_e = e
def print(self):
print(self.var_a,self.var_b,self.var_c,self.var_d,self.var_e)
print(test_class.lst)
test = test_child(1,2,3,4,5)
test.print()
test.append()
test.print()
클래스의 상속은 클래스를 선언할 때, 괄호를 열어 부모가 될 클래스를 입력하면 된다.
자식 클래스는 부모의 메소드 또는 클래스 속성을 가져와 사용할 수 있다.
또 괄호에 클래스명을 여러 개를 입력하여 다중 상속을 받을 수 있다.
'Python' 카테고리의 다른 글
[Python3] 파일 읽기/쓰기 (0) | 2022.07.06 |
---|---|
[Python3] 문자열 (0) | 2022.07.05 |
[Python3] 딕셔너리 (0) | 2022.06.30 |
[Python3] 데이터 슬라이싱, in, in not (0) | 2022.06.28 |
[Python3] Tuple(튜플) (0) | 2022.06.28 |