ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python TIL ( __init__(), overloading )
    python 2022. 11. 24. 18:52

    오늘 실시간 강의에서 LinkedList 에 대해 강의를 해주셨다.

    진도가 엄청나게 빠른듯한 느낌이긴 한데, 어쩄든

     

    링크드리스트의 노드를 만드려고 클래스를 선언하다가 띠용? 싶은 부분이 있었다

     

    __init__()
    class Node():
    
        def __init__(self):
            self.data = None
            self.next = None

    __init__()은 클래스 생성자 메소드 인데, 이건 python 기본 규칙인것 같다.

    물론 생성자 느낌으로 다른 메소드 만들어서 구현은 가능하긴 함!

    하지만 클래스 이름만 떡 써서 구현하려면 __init__을 활용해야 함

     

    나는 강의를 들으며 당연하게도 생성자를 Node()라고 적고 시작했었고.. 응 안되는구나..

     

     

     

    overloading
    class Node():
    
        def __init__(self):
            self.data = None
            self.next = None
    
        def __init__(self, data):
            self.data = data
            self.next = None
    
        def __init__(self, data , data2):
            self.data = data
            self.data2 = data2
            self.next = None

    응 생성자가 __init__ 이구나 이제 알았어! 싶은 마음에

    습관대로 너무 당연하게도 오버로딩을 시전하였으나.

     

    python아 너 오버로딩이 안되는구나?

     

     

    python 문법이나 제한이 java와 C++과 다를 때 그러려니 하고 넘어갔는데,

    오버로딩이 안될땐 순간 짜증이 나더라.

    그러면서도 아 오늘의 TIL은 이거다 싶은 기쁨과빡침의공존

     

     

     

    하지만 이것의 해결방법도 실로 간단했으니..

    class Node():
    
        def __init__(self, data=None, data2=None):
            self.data = data
            self.data2 = data2
            self.next = None
            
    
    a = Node(5)
    b = Node(5, 6)
    
    print(a.data, a.data2)
    print(b.data, b.data2)

    실행결과

    이... 이 변수 지정 안해주면 기본값으로 할당되는 저 개념.. 이름이 뭐더라?

    까먹었고 어쩄든 저 개념이 여기서 너무 유용하게 사용되어지는것

    그래도 생성자에 한해서는 오버로딩이 안되는게 너무 불편할 듯 싶다는 생각

     

     

     

     

    오늘은 self와 Init과 overloading 3연타로 뚜드려맞아서 짜증이마구날뻔했지만.

    긍정파워로 이겨낸 보람찬 하루였다

Designed by Tistory.