Python 에서의 Empty Variable

조회수 1396회

안녕하세요.. Python으로 공부를 하고 있는데, 다음과 같은 필요상황이 생겨서 질문합니다. 함수를 정의할 때. 생략이 가능한 변수를 정의를 해 주고 싶습니다.

class MyQueue(object):
        def __init__(self, Tree = None)
            self.list = [Tree]

제가 생각했을 때. 생략 가능하지만, 그래도 원할 때에는 넣을 수 있게 해줬습니다. 그런데 None 과 Empty는 서로 다른 것이더라고요.. None은 아무것도 가르키고 있는건 아니었지만, 그래도 자리를 차지하는 것이었습니다. Tree라는 변수를 None 말고 생략 가능하게 할 수 없을까요?

class MyQueue(object):
        def __init__(self, Tree = None):
            if Tree != None:
                self.list = [Tree]
            else:
                self.list = []

이런 방법 말고, Python 자체적으로 Empty 같은 키워드나 그런걸 지원 해 주나요?? 검색 키워드도 뭘로 해야할지 모르겠어서 이렇게 질문을 해봐요.

2 답변

  • self.list = [Tree]
    

    위와 같이 프로그램을 작성 할 경우 2차원 배열로 들어가게 됩니다.

    [ [None] ] 
    

    Queue 작성하려고 하시는 거 같으니 1차원 배열 필요하신 거라고 예상하구요.

    위 구문을 아래와 같이 수정해주시면 될 것 같습니다.

    class MyQueue(object):
    
        def __init__(self, Tree=None):
            self.list = Tree
    

    위와 같이 사용 시 None으로 되어 있으면 self.list를 다루는 과정에서 에러 날 수 있으니 주의해주시면 될 겁니다.


    수정

    질문의 요지를 잘 못 파악하고 제가 추측해서 답글을 달다보니 틀린 답을 했나보네요. 죄송합니다.

    작성하신 코드에서 수정 조금 하자면

                if Tree:
                    self.list = [Tree]
                else:
                    self.list = []
    

    이렇게 하면 같은 동작으로 좀 더 깔끔하게 쓰실 수 있을 것 같습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • ;;; dbwodlf3 2017.5.18 15:44
    • 질문의 요지에서 벗어나는 것 같고, 답변도 틀린 것 같습니다. 1. [ [None] ] 으로 안들어갑니다. 2. self.list = Tree 라고 하면은 list 라는 이름의 Tree 객체를 가리키게 됩니다. list 타입이 아니게 됩니다. dbwodlf3 2017.5.18 15:44
  • 질문이 애매모호합니다.

    init을 오버로딩 해서 인수가 없는 버전을 만들어줄 수 있습니다.

    class MyQueue(object):
            def __init__(self, Tree = None)
                self.list = [Tree]
    
            def __init__(self):
                pass
    
    
    • 저기... Python은 기본적으로 오버로딩이 안돼지 않나요?? 오버로딩이 되나?? ..... dbwodlf3 2017.5.22 14:24
    • 그리고요... 위와같은식으로 하면은. 오버로딩을 지원해주는 언어라고 할지라도. 컴파일 자체도 안될 것 같은데 말이죠...? dbwodlf3 2017.5.22 14:27
    • 그리고 제 질문은요. None 일 경우에 그냥 리스트를 만들면 dbwodlf3 2017.5.22 14:29
    • [None] dbwodlf3 2017.5.22 14:27
    • 이렇게 나오고, 그냥 만들면
      []
      이렇게 만들고 싶어서 혹시 키워드같은게 있을까 싶어서 질문 한 거에요. 그래도 답변 감사해요.
      dbwodlf3 2017.5.22 14:27
    • 그렇죠 파이썬은 오버로딩이 불가능합니다. 다른 언어와 혼동했네요-.- 조건절로 Tree가 None 혹은 Empty인지 확인해서 처리해야겠네요. 정영훈 2017.5.22 15:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)