Run The Bridge

(Python) Class 공부 본문

Python/How to Use Python

(Python) Class 공부

anfrhrl5555 2020. 12. 12. 13:32
728x90
반응형

학교생활을 하면서 Python을 사용하는 경우가 많은데 함수까지는 어느정도 이해가 되었다.

하지만 Class를 사용하기에는 아직 실력이 많이 부족하여, 종강도 했고 시간이 매우 많이 남으므로 Class공부를 시작했다. https://youtu.be/uIcK7-YU8uA에서 도움을 많이 받았다.

 

우선 제일 기초적인 계산기를 Class와 함수를 이용해서 만든다.

"""
클래스 이름: Four rules calculation
더하기: add
빼기: sub
곱하기: mul
나누기: div
"""
class Four_rules_calculation:
    def __init__(self, *args):
        self.a, self.b = map(int, input("숫자 두개를 입력해주세요: ").split())
        
    def add(self):
        return self.a + self.b

    def sub(self):
        return self.a - self.b

    def mul(self):
        return self.a * self.b

    def div(self):
        return self.a // self.b

# 나누기에 0값이 들어왔을 때 오류처리
class division_error_process(Four_rules_calculation):
    def div(self):
        if self.b == 0:
            print("분모에 0 이 올 수 없습니다.")
        else:
            return self.a // self.b

그 후 간단하게 코딩을 해보았다. 매우 기초적인 코딩이라 복사, 붙여넣기가 대부분이다.

하지만 백문의 불여일타라고 직접 Classdef를 사용해봄으로써 공부하기엔 충분하다.

 

처음 점프 투 파이썬으로 독학을 했을 땐 Class라는 것이 어려운것이라 생각했는데, 이상하게 Python을 자주접하고 많이쓰다보니 전에는 이해가 되지않던게 쉽게 이해가 된다.

 

 

1. Class를 쓸 때는 우선 Class명을 먼저 지정해준다.
Ex) Class test:
호출: test_class = test() à testClass안으로 들어간다고 이해했다.

 

2. 그 후 Class를 선언할 때 제일먼저 시작되는 __init__함수를 정의해준다.
Ex) def __init__(self) à 여기서 들어가는 self는 객체라고 보면될 것 같다.
호출: test_class = test()를 하면 init부분이 바로 시작된다.

 

3. 이제 __init__함수를 처리할 부가함수들을 정의해준다.
Ex) def add(self):
호출: test.add() à 위에서 Class안으로 진입했으니 이제 test(객체)를 통해 함수(add)를 호출한다.

 

4. 상속하는 방법은 새로운 Class를 정의하고 부모 Class 이름을 써준다.
Ex) Class test2(test):
호출: test2_class = test2()

 

5. 그 후 add부분을 고치고싶으면 조건문이나 재정의를 해주면된다.
def add(self):
 if self.a > 0:
  print(“a
0보다 큽니다”)

else:
  print(“a
0보다 작습니다”)

 

6. 밖에 부모 Class를 함수 전부를 상속받는 Super()가 존재한다.
def __init__(self):
super().__init__()
à 다음과 같은 형태로 적으면 부모 __init__의 전부를 상속받는다.
무언가 추가, 조건이 필요할 때 사용하면 좋다.

 

말들이 되게 어려운데, youtube를 보면서 공부하면 많은 도움을 받을 수 있을거라 생각된다.

 

그리고 Class를 사용하면 변수명앞에 self를 붙여줘야한다!!!!! self는 내가 지정한 객체 이름이 들어간다!!★

class JSS:
    def __init__(self):
        self.name = input("이름: ")
        self.age = input("나이: ")

    def show(self):
        print(f"나의 이름은 {self.name}, 나이는 {self.age}세 입니다.")

class JSS2(JSS):
    def __init__(self):
        super().__init__()
        self.gender = input("성별: ")
        
    def show(self):
        print(f"나의 이름은 {self.name}, 나이는 {self.age}세 입니다\
 그리고 성별은 {self.gender} 입니다.")
 
 a = JSS()
 --> 홍길동
 --> 24
 
 a.show()
 --> 나의 이름은 홍길동, 나이는 24세 입니다.
 
 ↓JSS를 JSS2에게 상속시킨 후 코드↓
 b = JSS2(JSS)
 --> 홍길동
 --> 24
 --> 남
 b.show() 
 --> 나의 이름은 홍길동, 나이는 24세입니다 그리고 성별은 남 입니다.

감사합니다. Thank you!

728x90
반응형
Comments