파이썬 프로그래밍의 기초: 클래스 3편

2018. 1. 31. 21:04Python-이론/python

클래스의 상속



상속이란 말그대로 부모나 윗사람들 것을 그대로 물려받는 것을 의미한다. 이런 것을 파이썬내에서 사용할 수 있다.


 
class sum:
    def __init__(self):
        self.result=0
    def lastsum(self,first, last):
        self.result = first + last
        return self.result

sum1 = sum()
print(sum1.lastsum(2,4))

class powerSum(sum()):
    pass

이렇게 상속했다면 powerSum은 sum의 모든 기능을 사용할 수 있어야 할 것이다.


sum1 = powerSum()
print(sum1.lastsum(4,2))
6

powerSum을 이용하여 객체를 만들어도 부모 객체의 sum의 기능을 그대로 사용할 수 있다. 이번에는 powerSum의 기능을 추가해보겠다.


 
class sum:
    def __init__(self):
        self.result=0
    def lastsum(self,first, last):
        self.result = first + last
        return self.result


class powerSum(sum):
    def __init__(self):
        self.result =5
    def superSum(self, first,last):
        self.result = first*2 + last * 2
        return self.result

sum1 = powerSum()
print(sum1.superSum(2,4))

보통은 기존에 있는 클래스의 기능을 다가지면서 기능을 확장하고 싶을때 주로 사용된다.



메서드 오버라이딩

부모 클래스 안에 있는 메소드를 자식클래스에서 더 확장하여 사용하고 싶다면 오버라이딩을 사용하면 된다. 사용 방법은 자식 클래스에 메소드의 이름 인수들을 동일하게 해서 정의해주면 된다. 호출할때 부모 클래스의 메소드가아닌 자식클래스의 메소드가 호출된다.


class sum:
    def __init__(self):
        self.result=0
    def lastsum(self,first, last):
        self.result = first + last
        return self.result


class powerSum(sum):
    def __init__(self):
        self.result =5
    def superSum(self, first,last):
        self.result = first*2 + last * 2
        return self.result

sum1 = powerSum()
print(sum1.superSum(2,4))

None

위의 예제와 같이 결과값이 다르게 나오는 것을 알 수 있다.