웹 서비스 개발(FB,BE,SERVER,DB)/Python

6. 클래스(Class)

Zoo_10th 2024. 1. 10.

1. 클래스(Class)란?

쉽게 말해 '틀'이다.

객체지향 언어에서 기본이 되는 단위를 class라고 한다.

객체를 생성하는데 도움이 되는 템플릿이나 설계도라고 할 수 있다.

객체는 클래스의 인스턴스라고도 불리며, 클래스에 정의된 속성과 메서드를 갖는다.

 

1-1. 속성(Attribute)

속성은 객체의 특징이나 상태를 나타내는 변수이다. 클래스 내부에 정의되어 객체마다 다른 값을 가질 수 있다.

객체의 상태를 나타내는 정보를 저장하고 조작하는데 사용된다.

 

1-2. 메서드(Method)

객체의 동작이나 기능을 나타내는 함수이다. 클래스 내부에서 정의되며, 객체에 대해 특정한 작업을 수행하거나 객체 상태를 변경하는데 사용된다.

 

2. 클래스 사용이유

  1. 코드의 재사용성: 클래스를 사용하면 비슷한 기능을 가진 여러 객체를 생성할 수 있다. 클래스의 정의는 객체의 템플릿이므로, 클래스를 한 번 정의하면 그 클래스를 기반으로 여러 객체를 생성할 수 있다. 이를 통해 코드의 재사용성이 증가하고 유지보수가 용이해진다.
  2. 코드의 가독성: 클래스는 객체의 속성과 메서드를 하나의 단위로 묶어 표현하기 때문에 코드의 가독성을 높여준다. 객체지향 프로그래밍은 현실 세계의 개념을 코드로 표현하기 때문에, 클래스와 객체의 관계를 이해하기 쉽고 직관적인 코드를 작성할 수 있다.
  3. 코드의 유지보수성: 클래스는 코드를 모듈화 하여 관련 기능을 논리적으로 그룹화할 수 있다. 이를 통해 코드의 유지보수성이 향상된다. 클래스를 수정하거나 새로운 클래스를 추가할 때 다른 부분에 영향을 미치지 않고 해당 클래스만 수정하거나 추가할 수 있다.
  4. 코드의 확장성: 클래스는 상속과 다형성을 통해 코드의 확장성을 제공한다. 상속을 통해 기존 클래스를 기반으로 새로운 클래스를 생성하고, 다형성을 통해 여러 객체를 하나의 일반적인 타입으로 다룰 수 있다. 이를 통해 코드를 유연하게 확장할 수 있다.

 

3. 클래스 용어 정리

클래스(Class) 객체지향언어에서 객체를 표현하는 가장 기본문법
속성(Attribute) 클래스에서 사용되는 변수
메서드(Method) 클래스에서 사용되는 함수
모델링(Modeling) 사물을 분석하여 필요한 속성과 동작을 추출하는 행위
캡슐화(Capsule) 모델링 결과를 클래스로 표현하여 하나의 덩어리로 구성하는 것
멤버(Member) 클래스를 구성하는 변수와 함수
self 클래스의 변수를 활용하기 위해서 필요한 self 인자
인스턴스(Instance) 클래스를 통해서 생성된 객체
객체(Object) 클래스를 비롯한 파이썬에서 말하는 모든 객체
생성자(init) 클래스의 객체를 생성할때의 초기값

 

4. 클래스 사용법

 1. 클래스 선언

 함수를 만드는 것과 마찬가지로 class임을 선언하고 뒤에 클래스명을 작성하면 된다.

첫 글자는 대문자를 사용하고 단어의 연결은 _(언더바)를 사용하지 않고 다시 대문자를 사용하는 것이 작명 규칙이다.

class 클래스명 :
	pass # 아무것도 실행하지 않기 위한 키워드

2. 초기값 설정(생성자)

 생성자 메서드는 __init__이라는 특별한 메서드로, 객체가 생성될 때 자동으로 호출되어 초기화 작업을 수행한다. 

생성자 메서드 내에서 self를 통해 객체의 속성을 설정하고 초기값을 할당할 수 있다.

class 클래스명 :
	def __init__(self,변수1,변수2):
		self.변수1 = 초기설정 값
		self.변수2 = 초기설정 값

3. self 인자

변수를 활용하려면 반드시 self 변수를 사용해야 한다. 

객체 자신을 지칭하는 것으로, 객체 내에 접근하기 위해 어느 객체인지 확인이 필요하다.

자기 자신을 의미하기 때문에 생성된 객체를 가리키고 해당 클래스에서 변수를 지칭하도록 해준다.

self는 클래스 내부에서 정의된 모든 메서드에서 사용되며, 위치는 고정되어 있다.

 

class를 이용하여 간단한 은행 코드 만들기

 

class를 사용하여 계산기 만드는 코드이다.

5. 클래스 상속(Inheritance)

부모(parents: Super Class) 클래스로부터 자식(Child: Sub Class) 클래스가 속성과 메서드를 물려받는 것이다.

상속을 사용하는 이유는 확장성을 높이기 위해서다.

5-1. 클래스 상속 방법

class 부모 클래스

class 자식 클래스명(부모 클래스명)

5-2. 오버라이딩(Overriding)

부모로부터 상속받은 메서드를 자식 클래스에서 재정의(변경 및 추가)하는 것을 말한다.

기존의 메서드를 변경하면 부모클래스에서 사용한 메서드의 이름과 같은 메서드를 만들면 부모 클래스의 메서드를 무시하고 새로 정의된 자식 클래스의 메서드를 사용할 수 있다.

기존의 메서드를 유지하면서 새로운 기능을 추가하기 위해서는 super(). 메서드명()을 사용하여 기존 기능에 새로운 기능을 추가할 수 있다.

상속받은 메서드를 자식 클래스에서 재정의하는 자식class 코드다.

5-3. 초기 속성 오버라이딩(Attribute Overriding)

*클래스 내에서는 속성이 두 가지가 있다. 클래스 속성 그리고 인스턴스 속성이다.

*자식 클래스에 생성자가 없다면 부모의 생성자를 사용하지만 자식의 생성자가 있다면 부모의 생성자는 상속되지 않고 오버라이딩된다.

*부모의 생성자를 추가 또는 변경하기 위해서는 자식 클래스의 __init__ 안에 super().__init__(부모 클래스 매개변수)을 사용하여 추가 또는 변경의 오버라이딩을 할 수 있다.

 

 - 클래스 속성
  *
부모 클래스의 속성은 상속된다.
  *클래스에 명시된 속성이다. 모든 인스턴스가 클래스 속성을 공유한다.

Class 객체를 사용

 

 - 인스턴스 속성

  *부모 클래스의 속성은 상속되지 않는다.

  *생성자 안에 초기 설정을 하는 속성이다. __init__에 포함된 초기값 속성을 의미한다.

Instance 객체를 사용

728x90

'웹 서비스 개발(FB,BE,SERVER,DB) > Python' 카테고리의 다른 글

8. 패키지(Packages)  (0) 2024.01.13
7. 모듈(Module)  (2) 2024.01.13
5. 파이썬 활용  (0) 2024.01.10
4. 함수 (Function)  (1) 2024.01.08
3. 제어문(Control Statement)  (0) 2024.01.05

댓글