반응형

[알고리즘 공부하며 python class 추가로 정리한 것]

class JSS:
    def __init__(self):
        self.name = input("이름을 입력 : ")
        self.age = input("나이를 입력 : ")
    def show(self):
        print("나의 이름은 {}, 나이는 {}세 입니다.".format(self.name,self.age))

__init__(self)는 JSS클래스가 만들어지면 바로 실행된다.

이렇게 이름과 나이를 입력하라고 바로 실행된다.

이름과 나이를 입력하고, a.name을 실행하면 입력한 이름이 저장되어 있는 것을 확인할 수 있다.

그리고 클래스는 기존의 클래스를 상속받아서 업데이트 시킬 수 있는데, 그 예시는 아래와 같다.

class JSS2(JSS):
    pass

우선 JSS2라는 클래스를 선언해주고, ()안에 상속할 클래스명인 JSS를 입력해주면 상속을 해온다.
위의 코드는 현재 상속만 받아왔을 뿐, JSS클래스에서 변경된 것은 하나도 없다.
JSS2 클래스를  실행해보면, JSS클래스와 완전히 같은 것을 확인 할 수 있다.
JSS2클래스를 실행하면, JSS의 __init__함수에 있는 것이 실행된다.

JSS클래스의 기능을 업데이트 해주기 위해 JSS2클래스를 정의하고 JSS클래스를 상속받았다.
지금부터 업데이트를 해보자.
우선 __init__함수를 다시 정의해 주어야 할 것이다.
JSS2클래스가 JSS클래스를 상속받아왔어도 JSS2에서 __init__함수를 정의하게되면, JSS함수의 __init__함수는 사용할 수 없게 된다. 
정말 그런지 한번 확인을 해보자

class JSS2(JSS):
    def __init__(self):
        pass

정말로 이름과 나이를 입력하는 함수인 __init__함수가 실행되지 않는다.
물론 __init__함수 외의 정의되어있는 다른 함수들 그대로 쓸 수 있다. 

따라서 JSS클래스를 업데이트하면서 JSS클래스의 __init__함수를 JSS2에서도 사용하고 싶다면,
super().___init__()를 사용하면 된다.

class JSS2(JSS):
    def __init__(self):
        super().__init__()
        self.gender = input("성별:")

JSS2클래스에서 JSS클래스를 상속받아오고, JSS2클래스의 __init__함수를 새로 선언 해줌과 동시에 JSS클래스의 __init__함수도 그대로 이용하면서 성별을 입력하는 작업을 JSS2의 __init__함수에 추가해 주었다.

위의 사진처럼 성별도 __init__함수를 통해 성별도 입력할 수 있게되었다.
그러면 JSS클래스에서 상속해왔던 show함수가 잘 작동하는지도 확인해 보자.

show함수도 잘 작동하는 것을 확인 할 수 있다.
만약 JSS2의 show함수에 성별도 출력하고 싶다면, 아래와 show함수를 새로 정의해주면 된다.

class JSS2(JSS):
    def __init__(self):
        super().__init__()
        self.gender = input("성별:")      
    def show(self):
        print("나의 이름은 {}, 나이는 {}세, 성별은{} 입니다.".format(self.name,self.age, self.gender))

그래서 총 정리해보면 아래와 같다.

class JSS:
    def __init__(self):
        self.name = input("이름을 입력 : ")
        self.age = input("나이를 입력 : ")
    def show(self):
        print("나의 이름은 {}, 나이는 {}세 입니다.".format(self.name,self.age))
        
class JSS2(JSS):
    def __init__(self):
        super().__init__()
        self.gender = input("성별:")      
    def show(self):
        print("나의 이름은 {}, 나이는 {}세, 성별은{} 입니다.".format(self.name,self.age, self.gender))

https://github.com/mgkim-developer/Algorithm-interview/blob/main/python_class.ipynb

 

GitHub - mgkim-developer/Algorithm-interview: Algorithm interview

Algorithm interview. Contribute to mgkim-developer/Algorithm-interview development by creating an account on GitHub.

github.com

반응형