210427_클래스 2
* 클래스 생성 후 연동 함
* 클래스 맴버를 선언하고 생성자와 소멸자를 이해함
* 클래스 선언및 객체 생성, 멤버 호출을 실행함
클래스
사용자 자료형 = 변수 + 메소드
캡슐화
은닉된 멤버 변수에게 오픈된 메소드가 값 전달 및 변경하는 구조
상속
클래스의 기능을 확장, 선조 클래스가 1일경우 단일상속, 1more(+) 다중상속 이라고 부른다.
정규패턴 (+ → 1more, * → 0more) , ... (0more),
ex)
def test(...) : 없을수도있고 여러개일수도 있다
다형성
다양한 형태의 성질로 이루어진 클래스의 동적 바인딩 구조
클래스 생성
자료형선언 → 객체생성 → 멤버호출
[형식]
class 클래스 이름 (상속 클래스명):
<클래스 변수 선언>
def 클래스 함수(메소드이름)(self,...):
→ 클래스 내부에 선언되는 매개인자는 첫번째 자리에 self
<수행할문장>
Step 01. 자료형, 클래스 선언
값을 받아서 저장하고 추가하는 클래스를 만들려고 한다.
값을 받아 저장하는 멤버를 가진 메소드를 empty( )라고 하고
값을 받아 추가하는 메소드를 add( ) 라고 명명하게 설계하자.
class Test:
def empty(self):
self.data = [ ]
def add(self, x):
self.data.append(x)
Step 02. 객체 생성
Test 클래스가 선언 및 정의가 되면 클래스 객체 생성을 통한 인스턴스를 만든다.
클래스변수 = 클래스명( ) #생성자를 호출하면서 객체를 생성
my01 = Test( )
my02 = Test( )
Step 03. 멤버 호출
my01.empty( )
my02.empty( )
메소드에 지정하는 self 의 의미
클래스 내부에 선언되는 메소드 매개인자는 첫번째 자리에 self로 반드시 명시한다.
모든 메소드는 최소한 self 인수는 반드시 명시되어야 하며 리턴되거나 매개인자로 대입받을 수 없다.
객체를 통해서 호출되는 메소드의 첫번째 매개인자인 self 는 자동으로 객체 참조될 주소로 대입 받는다.
self를 통해서 클래스의 멤버 변수 또는 메소드를 자유롭게 클래스 내부에서 호출할수있다.
oop에서 접근 제한자
private (비공개), protected(상속시공개), public (공개), defalut (현재 패키지에서만 공개)
__ = non-public
ex)
class Test{
__a // 비공개 t1=Test()
t1.a 호출불가능
def prn(){
self.a
}
}
클래스의 내장함수
파이썬에서 사용되는 모든 클래스 안에서 사용할 수 있는 특별한 메소드를 말한다.
클래스의 내장함수는 크게 (생성자, 소멸자), 연산자 오버로드, 기본 자료형 중 시퀀스 자료형에서 사용되는 인덱싱 관 련 함수 등의 세가지로 나뉜다.
생성자 __init__(initialization) 객체가 인스턴스 화 될때 호출되는 특수 메소드
소멸자 __del__(desructor) 인스턴스가 소멸될 때 호출되는 특수 메소드