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 = []
이렇게 하면 같은 동작으로 좀 더 깔끔하게 쓰실 수 있을 것 같습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
질문이 애매모호합니다.
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
댓글 입력