co-code 님의 블로그
클래스(Class)란? 구성 및 상속 본문
- 구성
- 클래스는 크게 2가지로 구성1. 속성2. 메서드
- 속성(Attribute) : 클래스 가지는 속성
- 메서드(method) : 클래스가 가지는 동작
- 클래스는 크게 2가지로 구성1. 속성2. 메서드
#class 선언
class Class_1():
def __init__(self, _a, _b):
self.a=_a
self.b=_b
def add_value(self):
result = self.a + self.b
return result
- 생성
- 선언
- class 클래스이름():
- 클래스이름의 첫글자는 대문자
- () : 생략 가능
- 생성된 class 안에는 변수와 함수가 존재
- 같은 변수명을 사용하더라도 각각 따로 저장
- class 클래스이름():
- 생성자 선언
- def __init__(self,...):
- __init__() 함수의 첫번째 매개변수는 self로 선언하여야 함
- __init__()
- 클래스를 생성시 초기화를 하며 실행되는 함수
- class가 생성이 될때 자동적으로 단 한번만 호출이 되는 함수(따로 호출 필요 X)
- class에서 필요가 없다면 만들지 않아도 무관
- class에서 사용할 변수 등록
- self
- 객체 자기 자신을 참조하는 매개변수
- class 내부에서 사용할 변수 저장
- self.a : self(자기자신) + .(~안에) + a(공간의 이름)
- return 은 만들지 않음
- class 생성시 자동 실행되는 부분 => return으로 받아오는 데이터 저장 X
- def __init__(self,...):
- 선언
- 간단한 연습문제 : 계산기 만들기
# 계산기 class 선언 (사칙연산)
class Calculate:
def __init__(self, _a, _b):
self.a = _a
self.b = _b
def add(self):
result = self.a + self.b
return result
def sub(self):
result = self.a - self.b
return result
def multi(self):
result = self.a * self.b
return result
def dev(self):
result = self.a / self.b
return result
cal_1 = Calculate(10, 5)
print(
cal_1.add(), cal_1.sub(), cal_1.multi(), cal_1.dev()
)
위 코드에 대한 출력 결과는
15 5 50 2.0
- 상속
- 사전적 의미 : 물려받다
- 사용하는 이유 : 기존 클래스를 변경하지 않고 기능을 추가하거나 변경
- 형식 : class B클래스(A클래스):
- B클래스에서 A클래스의 기능을 물려받을 수 있도록 하는 것
- 부모클래스 /자식클래스
# 부모 클래스 선언
class A:
def __init__(self, _name, _age):
self.name = _name
self.age = _age
self.a = 10
def user_info(self):
print(f"유저의 이름은 {self.name}이고 나이는 {self.age}입니다")
print(self.a)
user_1 = A('kim', 30)
user_1.user_info()
위 코드에 대한 출력 결과는
유저의 이름은 kim이고 나이는 30입니다
10
# 자식 클래스를 하나 생성
class B(A):
# B 클래스는 A 클래스의 함수들을 사용이 가능
def __init__(self, _name, _age, _addr):
super().__init__(_name, _age)
self.addr = _addr
def user(self):
print(f"이름 : {self.name}, 나이 : {self.age}, 주소 : {self.addr}")
-
- 자식 클래스 B는 부모 클래스 A 기능을 상속받음
- _name, _age는 부모 클래스에서 변수로 저장하는 기능 존재
- 부모클래스(super()) 안에(.) 있는 생성자 함수(__init__)를 호출
- 자식 클래스에서 부모 클래스를 상속받는다. = 기능(생성자 함수 제외)을 물려받는다.
- 생성자 함수의 특징 때문에 발생하는 일 : 해당 이름의 클래스가 생성이 될 때만 실행됨
- 부모 클래스에서 사용이 되는 변수들을 모두 사용하기 위해서
- 부모클래스와 같이 자식클래스애서 변수를 모두 생성
- 부모클래스의 생성자 함수를 호출
-
- 오버라이드(Override)
- python에서 기본적으로 지원됨
- 부모클래스(기능을 넘겨주는 클래스)의 메서드(함수)의 이름을 다른 기능으로 변경하는 방법
- 부모클래스에 A함수가 있고 자식 클래스에 A함수를 선언하면 자식 클래스에서는 A함수가 덮어씌워짐
- 부모클래스의 A함수는 그대로 유지
- 코드
- 오버라이드(Override)
#python 3.12 버전 이하
# from typing_extensions import override
#3.12 버전 이후
# from typing import override
-
- 오버로딩(Overloading)
- python에서 기본적으로 지원되지 X
- 같은 메서드(함수)를 여러개 만드는 방법
- 같은 함수를 호출하는데 인자의 타입이 다른 경우 : 다른 연산을 하겠다.
- 매개변수가 인자를 가변으로 받는다.
- 오버로딩(Overloading)
from functools import singledispatch
'python' 카테고리의 다른 글
| 이진 분류 (0) | 2026.05.13 |
|---|---|
| 데이터 불균형 문제 및 완화 방법 (0) | 2026.05.08 |
| 이상치 판별 및 처리 (2) | 2026.05.08 |
| matplotlib을 이용한 시각화 (0) | 2026.04.29 |
| 웹 크롤링 (0) | 2026.04.23 |