본문 바로가기
Python/점프 투 파이썬

클래스

by k-mozzi 2021. 8. 30.
반응형
Preface

 

음... 굉장히 오랜만에 글을 업로드하는 것 같다.

지난 주는 이번 주 개강에 앞서 그간 쌓인 스트레스와 피로를 풀기 위해 제주도로 4박 5일 여행을 다녀왔다.

공부는 잠시 뒤로하고 친한 친구들과 탁 트인 바다를 바라보며 이런 저런 이야기들을 주고받자 마음이 한층 편안해졌다.

 

집에 있을 땐 몰랐지만, 타지에서 곰곰이 생각해보니 내가 그동안 너무 조급했던 것 같다는 생각이 들었다. 여태껏 진도를 나가기에 급급하여 업로드한 후 제대로 복습 한 번 하지 않은 글들을 보며 서두르지 말고 기본부터 차근차근 쌓아 올리자는 생각을 다시 한 번 마음에 새길 수 있었다.

 

여행을 마친 후에는 집에 돌아와 방 정리를 했다.

필요없는 물건들을 모두 버린 후 새 가구들을 들여놓았더니 방이 생각보다 훨씬 깔끔해져 공부에 더욱 집중할 수 있는 분위기가 된 것 같다.

 

오늘부터는 학교 수업과 코딩 공부를 병행해야 하기 때문에 지난 두 달 간 했던 것 만큼의 공부는 할 수 없을 지도 모르지만, 조금씩 꾸준히 공부하다 보면 분명 노력의 결실을 맺을 수 있을 것이라 생각한다.


 

1. 전역 변수를 사용한 계산

 

result1 = 0
result2 = 0


def add1(num):  # 이전의 값을 메모리에 저장하는 함수
    global result1
    result1 += num
    return result1


def add2(num):
    global result2
    result2 += num
    return result2


print(add1(3))
print(add1(4))
print(add2(4))
print(add2(5))

 


 

2. 클래스 만들기

 

class FourCal:
    pass
# pass는 아무것도 수행하지 않는 문법으로 임시로 코드를 작성할 때 주로 사용한다.


a = FourCal()
print(type(a))
# type 함수는 파이썬이 자체로 가지고 있는 내장 함수로 객체 타입을 출력한다.

 


 

3. 메서드 호출하기

 

class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second


a = FourCal()
a.setdata(4, 2)
# setdata 메서드의 첫 번째 매개변수 self에는 setdata메서드를 호출한 객체 a가 자동으로 전달된다.
# 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에
# 파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다.

FourCal.setdata(a, 4, 2)
# 클래스 이름.메서드 형태로 호출할 때는 객체 a를 첫 번째 매개변수 self에 전달해 주어야 한다.

 


 

4. 객체 변수

 

class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second


a = FourCal()
b = FourCal()
a.setdata(4, 2)
b.setdata(3, 7)


print(id(a.first)) # 객체의 주소를 돌려주는 파이썬 내장 함수
print(id(b.first))
# 객체 변수는 다른 객체들 영향받지 않고 독립적으로 그 값을 유지한다

 


 

5. 사칙연산 클래스 만들기

 

class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second

    def add(self):
        result = self.first + self.second
        return result

    def sub(self):
        result = self.first - self.second
        return result

    def mul(self):
        result = self.first * self.second
        return result

    def div(self):
        result = self.first / self.second
        return result


a = FourCal()
a.setdata(4, 2)

print(a.add())
print(a.sub())
print(a.mul())
print(a.div())

 


 

6. 클래스 상속 1

 

class FourCal:
    def __init__(self, first, second):
        self.first = first
        self.second = second
# 생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 메서드이다.

    def setdata(self, first, second):
        self.first = first
        self.second = second

    def add(self):
        result = self.first + self.second
        return result

    def sub(self):
        result = self.first - self.second
        return result

    def mul(self):
        result = self.first * self.second
        return result

    def div(self):
        result = self.first / self.second
        return result


a = FourCal(4, 2)
print(a.add())
# __init__ 메서드도 다른 메서드와 마찬가지로 첫 번째 매개변수 self에 생성되는 객체가 자동으로 전달된다.


class MoreFourCal(FourCal):  # 클래스 이름 뒤 괄호 안에 상속할 클래스 이름을 넣어주면 클래스가 상속된다.
    pass


b = MoreFourCal(4, 2)
print(b.add())
print(b.sub())
# 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황일 때 상속을 사용한다.

 


 

7. 클래스 상속 2

 

class FourCal:
    def __init__(self, first, second):
        self.first = first
        self.second = second

    def setdata(self, first, second):
        self.first = first
        self.second = second

    def add(self):
        result = self.first + self.second
        return result

    def sub(self):
        result = self.first - self.second
        return result

    def mul(self):
        result = self.first * self.second
        return result

    def div(self):
        result = self.first / self.second
        return result


class MoreFourCal(FourCal):  
    def pow(self): # a의 b제곱을 구하는 함수
        result = self.first ** self.second
        return result


a = MoreFourCal(4, 2)
print(a.pow())

 


 

8. 오버라이딩

 

class FourCal:
    def __init__(self, first, second):
        self.first = first
        self.second = second

    def setdata(self, first, second):
        self.first = first
        self.second = second

    def add(self):
        result = self.first + self.second
        return result

    def sub(self):
        result = self.first - self.second
        return result

    def mul(self):
        result = self.first * self.second
        return result

    def div(self):
        result = self.first / self.second
        return result


class SafeFourCal(FourCal):
    def div(self):
        if self.second == 0:
            return 0
        else:
            return self.first / self.second


# 오버라이딩(Overriding) : 부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것
# 메서드를 오버라이딩하면 부모클래스의 메서드 대신 오버라이딩한 메서드가 호출된다.
a = SafeFourCal(4, 0)
print(a.div())

 


 

9. 클래스 변수

 

class Family:
    lastname = '김'


print(Family.lastname)

a = Family()
print(a.lastname)

# 클래스 변수는 클래스로 만든 모든 객체에 공유된다.

 

728x90
반응형

'Python > 점프 투 파이썬' 카테고리의 다른 글

패키지  (0) 2021.09.01
모듈  (0) 2021.09.01
입출력 연습문제  (0) 2021.08.21
사용자 입출력, 파일 읽고 쓰기  (0) 2021.08.20
함수  (0) 2021.08.18

댓글