본문 바로가기
programming/Python

파이썬 클래스 상속 메서드 생성 adding python class inheritance method

by 개코 - 개발과 코딩 2021. 11. 15.

파이썬 클래스는 상속 후에도 프로퍼티를 추가할 수 있고, 메서드를 추가할 수 있다. 기능확장을 위한 것도 있다. 값을 조작하고 가공하기 위해 메서드가 필요하다면 클래스에 메서드를 추가하면 된다. 코드는 간결해지고 재사용이 가능하다. 상속 후에는 부모클래스의 기능을 확장하여 사용할 수도 있다.

파이썬 클래스 상속 메서드 생성
adding python class inheritance method

자식클래스에서 부모클래스를 상속받은 후 클래스 변수인 프로퍼티를 만들 수 있었다.

이번엔 메서드를 추가할 것이다.

메서드를 추가하는 것이 대단한 것은 아니다.

사용할 클래스 함수를 만들어 주는 것이다.

이전에 클래스를 만들면서 클래스 메서드를 만들어 주었다.

상속한다고 해서 메서드를 만드는 방법은 같을 뿐이다.

사용방법

자식클래스에서 부모클래스를 상속한다는 것은 기존에 있던 클래스의 기능을 확장하여 사용하겠다는 것과 같다.

새롭게 클래스를 만들어 사용하는 것도 좋지만 큰 변화가 없다면 상속을 통해 시간을 개발시간을 줄이는 것도 하나의 방법이다. 

물론, 업무적인 측면에서 너무 부모클래스 하나에 의존하는 것도 좋지는 않지만 말이다.

print('----------')

#- 클래스부분
class ParentClass : #-{

    def __init__(this, property) : #-{
        this.PROPERTY = property
    #-}

#-}

class ChildClass(ParentClass) : #-{

    def __init__(this, property) : #-{
        
        #- ParentClass.__init__(this, soldier, hp, weapon, fire)
        super().__init__(property)
        this.AddPROPERTY = property
        
    #-}
    
    def ChildMethod(this) :  #-{
        
        print("만들어진 자식클래스 메서드", this.AddProperty);
 
    #-}
         

#-}

print('----------')

코드가 조금 길기에 난해할 수 있다.

하지만, 기본에서 벗어나지 않도록 하였다.

클래스를 사용할 때 프로퍼티를 추가하는 것이나 메서드를 추가하는 것이나 단일 클래스로 만들 때와 방법은 동일하다.

샘플코드

이전에 사용한 코드를 다시 살펴본다.

의도치 않은 코드였지만, 이미 메서드를 추가하여 사용한 것이다.

균일하지 않고 난잡한 코드지만 클래스에서 프로퍼티를 추가하고 메서드를 추가하는 방법은 모두 작성되어 있다.

print('----------')

#- 클래스부분
class ParentClass : #-{

    def __init__(this, soldier, hp, weapon, fire) : #-{
        this.SOLDIER = soldier
        this.HP = hp
        this.WEAPON = weapon
        this.FIRE = fire
    #-}

#-}

class ChildClass(ParentClass) : #-{

    def __init__(this, soldier, hp, weapon, fire, range) : #-{
        
        #- ParentClass.__init__(this, soldier, hp, weapon, fire)
        super().__init__(soldier, hp, weapon, fire)
        this.RANGE = range
        
    #-}
    
    def DisplayInfo(this) :  #-{
        
        vValue = this.SOLDIER
        print("군인", type(vValue), vValue);
       
        vValue = this.HP
        print("체력", type(vValue), vValue);

        vValue = this.WEAPON
        print("무기", type(vValue), vValue);

        vValue = this.FIRE
        print("공격력", type(vValue), vValue);

        vValue = this.RANGE
        print("사거리", type(vValue), vValue);
 
    #-}
         

#-}

print('----------')

vCls1 = ChildClass("소총수", 100, "GUN", "10", 10)
vCls1.info = "소총수 기본병사"
print(type(vCls1.info), vCls1.info);
vCls1.DisplayInfo();

print('----------')

vCls2 = ChildClass("저격수", 50, "SNIPER", "50", 50)
vCls2.info = "저격수 병사"
print(type(vCls2.info), vCls2.info);
vCls2.DisplayInfo();

print('----------')

vCls3 = ChildClass("포격수", 10, "BOMBER", "100", 100)
vCls3.info = "포격수 병사"
print(type(vCls3.info), vCls3.info);
vCls3.DisplayInfo();

print('----------')

클래스를 생성할 때 부모클래스를 상속받는다.

자식클래스는 부모클래스의 성질을 모두 가지고 있고, 프로퍼티를 추가하여 추가적인 정보를 설정할 수 있다.

추가로 메서드를 추가하여 독립적으로 만들어진 객체에 설정된 값들을 출력하고 있다.

결과화면을 보자.

어쨌거나 저쨋거나 자식클래스는 부모클래스를 상속받았다.

추가적인 정보를 위해 프로퍼티를 추가했다.

설정된 정보를 출력하기 위해 자식클래스에 화면출력을 위한 메서드를 만들어 주었다.

상속받은 자식클래스가 객체로 생성되면서 독립적으로 사용할 수 있음을 알 수 있다.

반응형

댓글