혼공파 | 08. 클래스 (fin)

yeonk·2021년 9월 25일
0

python

목록 보기
8/22
post-thumbnail

1. 클래스와 객체


파이썬은 객체 지향 프로그래밍 언어이다.
객체 지향 프로그램이 언어클래스기반으로 객체를 만들고, 객체를 우선으로 생각하여 프로그래밍하는 것을 이념을 삼는다.



객체(object): 여러가지 속성을 가질 수 있는 모든 것
클래스(class): 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문





클래스 선언

# 클래스 선언
class 클래스 이름:
	클래스 내용
    
# 인스턴스
인스턴스 이름(변수 이름) = 클래스 이름()

인스턴스(instance): 클래스를 기반으로 만들어진 객체

Ex. 붕어빵틀 (클래스) - 실체화된 붕어빵(인스턴스)






생성자(constructor)

클래스 이름과 같은 함수.
클래스 내부에 __init__라는 함수를 만들면 객체를 생성할 때 처리할 내용을 작성할 수 있다.

# 생성자
class 클래스 이름:
	def __init__(self, 추가적인 매개변수):
    	pass
        
# 소멸자(destructor)
	def __del__(self):
    	pass

self: 자기 자신을 나타내는 딕셔너리. 클래스 내부의 함수는 첫 번째 매개변수로 self를 입력해야 한다.
self.식별자 형태로 접근






메소드(method)

클래스가 가지고 있는 함수
멤버 함수(member function), 인스턴스 함수(instance function)라고도 함

class 클래스 이름:
	def 메소드 이름(self, 추가적인 매개변수):
    	pass






2. 클래스 추가 구문


클래스와 인스턴스

isinstance(): 객체가 어떤 클래스로부터 만들어졌는지 확인

isinstance(인스턴스, 클래스)

하나의 리스트 내부에 여러 종류의 인스턴스가 들어가 있을 때, 인스턴스들을 구분하며 속성과 기능을 사용할 때 사용






특수 메소드

__이름__() 형태의 메소드는 특수한 상황에 자동으로 호출되도록 만들어졌다.

__eq__: equal, 같다
__ne__: not equal, 다르다
__gt__: greater than, 크다
__ge__: greater than or equal, 크거나 같다
__lt__: less than, 작다
__le__: less than or equal, 작거나 같다






클래스 변수와 메소드

클래스가 속성(변수), 기능(함수)를 가질 수도 있다.



클래스 변수

일반 변수와 큰 차이는 없으나 클래스가 가진 기능을 명시적으로 나타내어 변수로 만든다.

# 클래스 변수 생성
class 클래스 이름:
	클래스 변수 =# 클래스 변수에 접근하기
클래스 이름.변수 이름



클래스 함수

일반 함수와 큰 차이는 없으나 클래스가 가진 기능을 명시적으로 나타내어 함수로 만든다.

# 클래스 함수 만들기
clss 클래스 이름:
	@classmethod
    def 클래스 함수(cls, 매개변수):
    	pass

# 클래스 함수 호출
클래스 이름.함수 이름(매개변수)






3. 가비지 컬렉터(garbage collector)


더 사용할 가능성이 없는 데이터를 메모리에서 제거하는 역할
가비지 컬렉터는 알아서 실행된다.

스왑(swap): 메모리가 부족해지면 컴퓨터는 하드디스크를 메모리처럼 사용해 무언가를 올리기 시작하는데 이 동작을 스왑이라고 함






4. 프라이빗 변수와 게터,세터


프라이빗 변수

클래스 내부의 변수를 외부에서 사용하는 것을 막고 싶을 때.
__변수이름 형태로 선언






게터(getter)와 세터(setter)

프라이빗 변수의 값을 추출하거나 변경할 목적으로, 간접적으로 속성에 접근하도록 해주는 함수






5. 상속(inheritance)


기존에 만들어져 있는 기본 형태에 내가 원하는 것만 교체하는 것

다중 상속: 다른 누군가가 만들어 놓은 형태들을 조립해서 내가 원하는 것을 만드는 것

부모(parent): 기반이 되는 것(기반 클래스)

자식(child): 부모 클래스를 기반으로 생성한 것






오버라이드(override)

부모에 정의되어 있는 함수를 자식에서 다시 정의하는 것(재정의)
기존에 있던 함수, 변수 이외의 것을 완전히 새로 정의하는 것도 가능함






reference


윤인성, 『혼자 공부하는 파이썬』, 한빛미디어

0개의 댓글