본문 바로가기
Python/Python_basic

클랙스/객체

by Mr.DonyStark 2024. 1. 29.

 용어정리

  ○ 클래스 : 객체를 만들기 위한 사용자 정의 자료형 틀

  ○ 인스턴스 : 클래스를 기반으로 만들어진 구체적인 객체
  ○ 메서드 : 클래스 내부에 선언된 함수
  ○ 상속 : 어떤 클래스의 특성을 다른 클래스에 전달하는 기법
  ○ 메서드 오버라이딩 : 같은 함수에 여러기능을 부여하는 구현기법으로 부모/자식 클래스에서 사용되는 함수이름이 같음

 

예제 1) 기본형태

#기본형식 

#클래스 지정
class Calculator:
    def __init__(self):
        self.result = 0
    
    def add(self, num):
        self.result += num
        return self.result

#객체 지정 → 위에서 지정한 클래스로 a, b 객체 생성. a, b 객체는 Calualator에서 지정한 메서드 사용가능
a = Calculator()
print(a.add(5)) #출력값 5
print(a.add(10)) #출력값 15

b = Calculator()
print(b.add(8)) #출력값 8
print(b.add(20)) #출력값 28


 예제 2) 사칙연산

#클래스 지정
class FourCal:
    def set_data(self, first_num, second_num):
        self.first_num = first_num
        self.second_num = second_num

    def add(self):
        result = self.first_num + self.second_num
        return result

    def mul(self):
        result = self.first_num * self.second_num
        return result

    def sub(self):
        result = self.first_num - self.second_num
        return result

    def div(self):
        result = self.first_num / self.second_num
        return result
    
#클래스 Fourcal 이라는 틀을 활용해 a 객체 생성
a = FourCal() #객체지정
a.set_data(50, 40) #객체>객체메서드로 데이터 세팅
print(a.add())  #객체>객체메서드 사용
print(a.mul())  #객체>객체메서드 사용
print(a.sub())  #객체>객체메서드 사용
print(a.div())  #객체>객체메서드 사용

 

 예제 3) 사칙연산 : 생성자__init__사용

#클래스 지정
class FourCal:
    def __init__(self, first_num, second_num):
        self.first_num = first_num
        self.second_num = second_num

    def add(self):
        result = self.first_num + self.second_num
        return result

    def mul(self):
        result = self.first_num * self.second_num
        return result

    def sub(self):
        result = self.first_num - self.second_num
        return result

    def div(self):
        result = self.first_num / self.second_num
        return result
    
#클래스 Fourcal 이라는 틀을 활용해 a 객체 생성
b = FourCal(20,60) #클래스내 __init__생성자로 인하여 클래스 지정과동시에 매개변수 설정가능
print(b.add())  #객체>객체메서드 사용
print(b.mul())  #객체>객체메서드 사용
print(b.sub())  #객체>객체메서드 사용
print(b.div())  #객체>객체메서드 사용

 

 예제 4) 상속 : class 자식_상속클래스명(부모_ 상속할클래스명)

#클래스 지정
class FourCal:
    def __init__(self, first_num, second_num):
        self.first_num = first_num
        self.second_num = second_num

    def add(self):
        result = self.first_num + self.second_num
        return result

    def mul(self):
        result = self.first_num * self.second_num
        return result

    def sub(self):
        result = self.first_num - self.second_num
        return result

    def div(self):
        result = self.first_num / self.second_num
        return result
    
#상속클래스 지정
class Clone_Fourcal(FourCal):
    pass #부모클래스 상속후 건드리지 않고 그대로 사용하겠다고 하면 pass

new_a = Clone_Fourcal(50, 40)  #상속클래스를 활용하여 객체 생성 및 매개변수 입력. 상속클래스로 생긴 객체는 부모클래스의 메서드또한 가지고 있으므로 활용 가능
print(new_a.add())
print(new_a.mul())
print(new_a.sub())
print(new_a.div())

 

 예제 5) 상속/오버라이딩: class 자식_상속클래스명(부모_ 상속할클래스명)

#부모 클래스
class Car:
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed
    
    def upSpeed(self, value):
        self.speed += value
        return self.speed
    
    def downSpeed(self, value):
        self.speed -= value
        return self.speed

# 자식 클래스 - Sedan
class Sedan(Car):
    # upSpeed 메서드 오버라이딩
    def upSpeed(self, value):
        # 오버라이딩된 부분
        super().upSpeed(value)  # 부모 클래스의 upSpeed 메서드 호출
        if self.speed >= 150:
            self.speed = 150
        return self.speed

#부모클래스 Car를 활용하여 obba_car 객체 생성
obba_car = Car("red", 50)
print(obba_car.upSpeed(100))
print(obba_car.downSpeed(80))
print(obba_car.upSpeed(100))   # 속도 150이 넘어도 출력됨

# #부모클래스 Car의 자식클래스 Sedan을 활용하여 brother_car 객체 생성
brother_car = Sedan("빨강", 50)
print(brother_car.upSpeed(30))
print(brother_car.upSpeed(50))
print(brother_car.upSpeed(50))     # 속도 150이 넘으면 150으로 출력됨. 자식클래스에서 부모클래스의 메서드를 오버라이딩하여 정의 후 활용했기 때문임

 

'Python > Python_basic' 카테고리의 다른 글

오류예외 처리  (1) 2024.01.30
정규 표현식 ④  (0) 2024.01.28
정규 표현식 ③  (1) 2024.01.28
정규 표현식 ②  (0) 2024.01.28
정규 표현식 ①  (0) 2024.01.26