ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] 클래스
    파이썬 2023. 8. 26. 20:50

    클래스

    클래스로 만든 객체는 인스턴스라고 부른다.

    각 객체는 다른 객체와 서로 독립적인 값을 유지한다.


    class FourCal:
        def setdata(self,first,second): #self에 a가 전달되었다면
            self.first = first # a.first = 4
            self.second = second #a.second = 2
    
    
    
    
    
    a = FourCal() #a 객체만들기
    
    
    a.setdata(4,2) #클래스 내 함수(메소드) 이용해서 호출

     

    파이썬에서는 첫번째 매개변수 이름을 관례적으로 self를 사용한다.

    setdata의 첫번째 매개변수 self에는 setdata메소드를 호출한 객체 a가 전달된다. 

     

    사칙연산 클래스만들기
    class FourCal:
        def setdata(self,first,second): #self에 a가 전달되었다면
            self.first = first # a.first = 4
            self.second = second #a.second = 2
    
        def add(self):
            result = self.first + self.second
            return result
        def mul(self):
            result = self.first * self.second
            return result
        def sub(self):
            result = self.first - self.second
            return result
    
        def div(self):
            result = self.first / self.second
            return result
    
    
    
    
    
    a = FourCal() #a 객체만들기
    
    
    a.setdata(4,2) #클래스 내 함수(메소드) 이용해서 호출
    print(a.add())
    print(a.mul())
    print(a.sub())
    print(a.div())

     

     

    생성자

    • 생성자란 객체가 생성될 때 자동으로 호출되는 메소드를 의미한다. 
    • 메서드명으로 __init__을 사용하면 생성자가 된다.
    • 위 예를 보면 setdata(4,2)를 하지 않고 add()를 하게 되면 first,second의 초깃값이 설정되어있지 않아 오류가 발생하는데, 매번 setdata()를 호출하기엔 번거롭다. 그래서 보통 변수를 처음에 초기화하고 그 과정을 간소화하기 위해 사용한다.
    class FourCal:
    
        def __init__(self,first,second):
            self.first = first
            self.second = second
    
        def setdata(self,first,second): #self에 a가 전달되었다면
            self.first = first # a.first = 4
            self.second = second #a.second = 2
    
        def add(self):
            result = self.first + self.second
            return result
        def mul(self):
            result = self.first * self.second
            return result
        def sub(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())
    print(a.mul())
    print(a.sub())
    print(a.div())

     

     

    클래스 상속

    어떤 클래스를 만들때 다른 클래스의 기능을 물려받을 수 있게 만드는 것

    상속은 기존 클래스를 변경하지 않고, 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.

    class 클래스이름(상속할 클래스 이름)
    class FourCal:
    
        def __init__(self,first,second):
            self.first = first
            self.second = second
    
        def setdata(self,first,second): #self에 a가 전달되었다면
            self.first = first # a.first = 4
            self.second = second #a.second = 2
    
        def add(self):
            result = self.first + self.second
            return result
        def mul(self):
            result = self.first * self.second
            return result
        def sub(self):
            result = self.first - self.second
            return result
    
        def div(self):
            result = self.first / self.second
            return result
    
    class MoreFourCal(FourCal): #MoreFourCal클래스는 FourCal클래스를 상속하였으므로 FourCal클래스의 모든 기능을 사용할 수 있다.
            def pow(self):
            result = self.first ** self.second # a^b
            return result
    
    
    
    
    
    a = MoreFourCal(4,2)
    
    
    
    print(a.add())
    print(a.mul())
    print(a.sub())
    print(a.div())

     

     

    메소드 오버라이딩

    부모 클래스에 있는 메소드를 동일한 이름으로 자식클래스에 선언하는 것을 메소드 오버라이딩이라고한다.

    메소드 오버라이딩하면 부모 클래스의 메소드 대신 오버라이딩한 자식 클래스의 메소드가 호출된다.

    class FourCal:
    
        def __init__(self,first,second):
            self.first = first
            self.second = second
    
        def setdata(self,first,second): #self에 a가 전달되었다면
            self.first = first # a.first = 4
            self.second = second #a.second = 2
    
        def add(self):
            result = self.first + self.second
            return result
        def mul(self):
            result = self.first * self.second
            return result
        def sub(self):
            result = self.first - self.second
            return result
    
        def div(self):
            result = self.first / self.second
            return result
    
    class MoreFourCal(FourCal): #MoreFourCal클래스는 FourCal클래스를 상속하였으므로 FourCal클래스의 모든 기능을 사용할 수 있다.
        def pow(self):
            result = self.first ** self.second # a^b
            return result
    
    
    class SafeFourCal(FourCal):
        def div(self): #메소드 오버라이딩
            if self.second == 0: #나누는 값이 0인경우 0을 리턴한다.
                return 0
            else:
                return self.first/self.second
    
    
    a = MoreFourCal(4,2)
    
    
    
    print(a.pow())

     

     

    클래스변수

    • 클래스 변수는 클래스 안에 선언하는 변수이다.
    • 클래스이름.클래스변수 로 사용할 수 있다.
    • 클래스로 만든 모든 객체에 공유되는 특징이 있다.
    class Family:
        lastname = "김"
    
    
    a = Family()
    b = Family()
    print(a.lastname)
    print(b.lastname)

     

    '파이썬' 카테고리의 다른 글

    [python] list, tuple, dict, set 총 정리  (0) 2024.01.16
    [python] 모듈, 패키지  (0) 2023.08.26
    [python] 입출력  (0) 2023.08.21
    [python] 함수  (0) 2023.08.21
    [python] 제어문  (0) 2023.08.20

    댓글

lee-ding