Python 8일차

조영훈·2024년 8월 11일

Python

목록 보기
8/16
post-thumbnail

Python 클래스 개념과 작성법

클래스란?

객체를 생성하기 위한 설계도로 데이터(멤버 변수)와 데이터를 처리하는 함수(메서드)를 하나의 단위로 묶어, 관련된 기능과 데이터를 객체로 만들 수 있게 해준다.


클래스의 구성 요소

  1. 멤버 변수: 클래스 내에 정의된 데이터. 객체의 상태를 저장

  2. 메서드: 클래스 내에 정의된 함수. 객체의 동작을 정의

  3. 생성자(init): 객체가 생성될 때 호출되는 특별한 메서드로, 객체의 초기 상태를 설정

  4. 소멸자(del): 객체가 삭제될 때 호출되는 메서드로, 객체가 사용하던 리소스를 정리한다.


기본구조

class 클래스명:
    # 클래스 변수 (전역 변수처럼 사용)
    멤버변수 = 초기값
    
    # 생성자 메서드 (__init__)
    def __init__(self, 매개변수들):
        # 인스턴스 변수 (객체가 개별적으로 가질 변수)
        self.인스턴스변수 =# 메서드 (함수)
    def 메서드명(self, 매개변수들):
        # 메서드 내용
        pass

클래스 예제

1. 전역 변수와 클래스 내 메서드 예제 ✍️

kor = 100  # 전역 변수

def abc():
    print('일반함수')

class My:
    kor = 90  # 클래스 변수
    
    def abc(self):  # 인스턴스 메서드
        print('메서드')
    
    def show(self):  
        print(self.kor)  # 클래스 변수 접근
        print(kor)  # 전역 변수 접근
        self.abc()  # 인스턴스 메서드 호출
        abc()  # 전역 함수 호출

m = My()  # 객체 생성
m.show()  # 메서드 호출

2. Student 클래스 예제 ✍️

class Student:
    old = -1  # 클래스 변수
    
    def __init__(self, name, old=17):  # 생성자
        self.name = name  # 인스턴스 변수
        self.old = old  # 인스턴스 변수
    
    def print_name(self):  # 메서드
        print(self.name)
    
    def print_old(self):
        print(self.old)

s = Student("철수")
s.print_name()  # 철수의 이름 출력
print('철수의 나이는 ', s.old)  # 철수의 나이 출력

3. Car 클래스 예제 ✍️

class Car:
    handle = 1  # 클래스 변수
    speed = 0
    airBag = 0
    color = '파랑'
    
    def __init__(self, airBag, name):  # 생성자
        print('초기화작업')
        self.airBag = airBag  # 인스턴스 변수
        self.name = name  # 인스턴스 변수
    
    def __del__(self):  # 소멸자
        print('객체종료시 자동으로 수행')
    
    def SetSpeed(self, speed):  # 메서드
        self.speed += speed
    
    def GetSpeed(self):
        return self.speed

# 객체 생성 및 속성 접근
car1 = Car(1, 'tom')
print(car1.handle, car1.speed, car1.airBag)  # 1 0 1

car2 = Car(3, 'james')
print(car2.handle, car2.speed, car2.airBag)  # 1 0 3

car1.color = '검정'
print(car1.name, car1.color)  # tom, 검정

car2.color = '노랑'
print(car2.name, car2.color)  # james, 노랑

# 메서드 사용
car1.SetSpeed(70)
print('현재 스피드는 car1', car1.GetSpeed())  # 70
print('현재 스피드는 car2', car2.GetSpeed())  # 0
profile
개발 꿈나무

0개의 댓글