co-code 님의 블로그

클래스(Class)란? 구성 및 상속 본문

python

클래스(Class)란? 구성 및 상속

co-code 2026. 4. 15. 19:00
    • 구성
      • 클래스는 크게 2가지로 구성1. 속성2. 메서드
        • 속성(Attribute) : 클래스 가지는 속성
        • 메서드(method) : 클래스가 가지는 동작
#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 안에는 변수와 함수가 존재
            • 같은 변수명을 사용하더라도 각각 따로 저장
      • 생성자 선언 
        • def __init__(self,...):
          • __init__() 함수의 첫번째 매개변수는 self로 선언하여야 함
          • __init__() 
            • 클래스를 생성시 초기화를 하며 실행되는 함수
            • class가 생성이 될때 자동적으로 단 한번만 호출이 되는 함수(따로 호출 필요 X)
            • class에서 필요가 없다면 만들지 않아도 무관
            • class에서 사용할 변수 등록
          • self
            • 객체 자기 자신을 참조하는 매개변수
            • class 내부에서 사용할 변수 저장
            • self.a : self(자기자신) + .(~안에) + a(공간의 이름)
          • return 은 만들지 않음
            • class 생성시 자동 실행되는 부분 => return으로 받아오는 데이터 저장 X
    • 간단한 연습문제 : 계산기 만들기
# 계산기 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__)를 호출
    • 자식 클래스에서 부모 클래스를 상속받는다. = 기능(생성자 함수 제외)을 물려받는다.
    • 생성자 함수의 특징 때문에 발생하는 일 : 해당 이름의 클래스가 생성이 될 때만 실행됨
    • 부모 클래스에서 사용이 되는 변수들을 모두 사용하기 위해서
      1. 부모클래스와 같이 자식클래스애서 변수를 모두 생성
      2. 부모클래스의 생성자 함수를 호출
      • 오버라이드(Override)
        •  python에서 기본적으로 지원됨
        • 부모클래스(기능을 넘겨주는 클래스)의 메서드(함수)의 이름을 다른 기능으로 변경하는 방법
        • 부모클래스에 A함수가 있고 자식 클래스에 A함수를 선언하면 자식 클래스에서는 A함수가 덮어씌워짐
          • 부모클래스의 A함수는 그대로 유지
        • 코드
#python 3.12 버전 이하
# from typing_extensions import override
#3.12 버전 이후
# from typing import override
      • 오버로딩(Overloading)
        •  python에서 기본적으로 지원되지 X
        • 같은 메서드(함수)를 여러개 만드는 방법
        • 같은 함수를 호출하는데 인자의 타입이 다른 경우 : 다른 연산을 하겠다.
        • 매개변수가 인자를 가변으로 받는다.
           
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