-객체: 속성(상태,변수) 과 메소드(동작, 함수)를 갖는 것으로
모든 변수에 할당할 수 있고 인자로 념겨지는 것들의 총칭
-객체 지향 프로그램: 객체를 활용한 프로그래밍으로 자신만의 데이터와 프로시저를 갖고 각 객체들을 서로 연결되어 다른 객체 제공하는 유기적 집합체
+)추상화(abstraction): 복잡한 자료, 모듈, 시스템으로 부터
핵심적인 개념 또는 기능 간추려 낸다
+)캡슐화(encapsulation): 객체의 속성(data fields)와 행위 (methods)를 하나로 묶음
:실제 구현 내용 일부를 은닉.
-id함수(): 내장함수, 객체의 고유값 반환
-copy() : 얕은 복사로 원본 데이터는 그대로 두고 참조 데이터 id만 복사
-deepcopy(): 깊은 복사로 원본 객체의 값을 복사
클래스 선언 및 인스턴스화
-클래스 선언(class 키워드 이용)
-객체 인스턴스화
:클래스 객체 만들기 -> 클래스 이용
+form) 선언한 클래스 이름에 괄호 적고 적당한 변수 할당
+)객체 인스턴스화 시키는 것은 함수에 변수 할당과 유사하다.
+)표기법: 카멜 케이스
-클래스명은 주로 명사로 명명
: 각 단어의 앞 글자를 대문자로 쓸 것
2.클래스 속성과 메소드
-클래스 속성 :상태 표현, 변수로 나타냄
:color = 'red', category = 'sports car'
:인스턴스 객체.속성명 [클래스 속성에 접근하는 법]
-메소드 :동작 표현, 함수로 나타냄., 키워드 def
:클래스의 메서드는 첫번째 인자는 self값 적어야함
:인스턴스객체.메소드명 [메소드를 호출하는 법]
:매직 메소드 https://rszalski.github.io/magicmethods/
:주행 메서드 : def drive(self) 메서드명 정의.
:가속 메서드 def accel(self,현재 속도 인자명, 가속할 값 인자명)
현재속도 인자명=current_speed.->self.speed_up
인자명= speed_up -> self.current_speed
3.접두사 self.
:인스턴스의 속성으로 사용하고 싶은 변수를 self.써줌
왜냐하면, self인자를 통해 선언된 객체 값. 의미한다
-self요약
1)self는 자기 자신입니다.
2)클래스에 의해 생성된 객체(인스턴스)를 가리킵니다.
3)클래스의 메서드는 인자로 해당 인스턴스(self)받음
4)메소드를 호출할 때는 self인자 전달X
5)self의 값은 인터프리터가 제공
6)인스턴스 변수 정의할 때 접두사 self.을 붙여줌
4.생성자
1)init
-메소드 안에 인자 전달로 객체의 속성값 초기화
-지정하고 싶을 때 값을 전달해줌
5.클래스 변수와 인스턴스 변수
1)변수명쓰고 값을 할당
2)init메소드 안에 self.함께 설정
3)클래스 변수
:클래스에 바로 선언된 속성.
:모든 객체에서 같은 값을 조회
4)인스턴스 변수
:init() 안에 self를 사용해 선언된 변수
:객체가 인스턴스화 되면 새로운 값 할당 (공유X)
:기존 클래스 기능 유지한 채 새로운 속성만 추가하여 새로운 클래스를 선언할 때 사용.
:소괄호 안에 상속받을 클래스 입력을 적음
-자식 클래스,서브 클래스, 파생된 클래스
: 상속받은 클래스 - 부모클래스의 변경사항이 그대로 반영됨
-부모 클래스, 슈퍼 클래스, 베이스 클래스
: 기존 클래스
-상속 사용법
1)메소드 추가하기(add)
:새로운 메소드 추가
2)메소드 재정의하기(override)
:기존 메소드 변경
3)부모 메소드 호출하기(super())
ex)
def(부모클래스의)메소드이름():
super().메소드이름()
:현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업입니다.