Array Tuple Dictionary 비교 및 접근방법
26 Nov 2018
javascript에서 사용하는 객체 접근 방식과 python에서 사용하는 Array Tuple Dictionary의 접근 방식이 다르다. Array Tuple Dictionary를 비교하고 접근방식을 정리한다.
자료형
1. Array
-
[]
는 배열을 선언하거나 초기화할 때, 배열의 원소에 접근할 때 사용arr = [] arr = [1,2,3,4] arr[3]
2. Tuple
-
()
는 튜플을 선언하거나 초기화할 때 사용 -
()
는 튜플의 원소에 접근할 때 사용 -
튜플은 이미 생성된 원소를 제거하거나, 변경할 수 없음
-
원소의 타입이 같을 때 주로 사용됨(python의 권장 사항)
myTuple = () myTuple = (1,2,3,4) myTuple[3]
3. Dictionary
-
{}
는 딕셔너리를 선언하고나 초기화 할 때 사용 -
[]
는 key에 대응하는 value를 할당하거나, value에 접근할 때 사용myDictionary = {} myDictionary = {"mouse":3, "penguin":5} myDictionary["mouse"] myDictionary["cat"] = 1 # error 발생 # 'dict' object has no attribute 'cat' myDictionary.cat
-
dictionary를 object 처럼 접근하기
class objectview(object): def __init__(self, d): self.__dict__ = d d = {'a': 1, 'b': 2} o = objectview(d) assert o.a == 1 assert o.b == 2 # error 발생 # 'objectview' object is not subscriptable print(o['b']) # 아래와 같이 수정 print(o.__dict__['b']) # 위에 object는 dictionary 처럼 동작하지 않는다. # dictionary methods를 사용하기 위하서는 __dist__에 접근해야만 한다.
class objdict(dict): def __getattr__(self, name): if name in self: return self[name] else: raise AttributeError("No such attribute: " + name) def __setattr__(self, name, value): self[name] = value def __delattr__(self, name): if name in self: del self[name] else: raise AttributeError("No such attribute: " + name) d = {'a': 1, 'b': 2} myDict = objdict(d) print(myDict.b) print(myDict['b'])