2017-12-14 1 views
1

[] 연산자를 파이썬에서 오버로드 할 수 있습니까?[] 연산자를 파이썬에서 오버로딩합니까?

classname[elementname] (예 : dict에서와 같이)을 호출하여 클래스의 메소드에 액세스하려고합니다. 이것은 불필요한 것처럼 보일지 모르지만 클래스는 자식이있는 자식 요소가 포함 된 데이터베이스 요소를 캡슐화합니다.

내가 그때 대신 할 수 싶어 3 상속 단계에서 어떤 아이 알고있는 경우 :

classnname.getChild(childname1).getChild(childname2).getChild(childname3) 

사용하는 짧고 청소기 :

classnname[childname1][childname2][childname3] 
+3

['__getitem__'] (https://docs.python.org/3/reference/datamodel.html#object.__getitem__) – kindall

+0

@kindall : 고맙습니다. 완전히 작동합니다! 왜 내가 Google/stackoverflow 검색으로 이것을 찾을 수 없었습니까? – mrCarnivore

+0

잘 모름; 너는 무엇을 찾고 있었느냐? 'Python operator overload'에 대한 Google의 첫 번째 결과는 당신이 찾는 정보입니다. – kindall

답변

4

당신은 마법을 구현해야

를 참조 classname

class classname: 
    def __getitem__(self, key): 
     return self.getChild(key) 
에 방법 __getitem__ 10

관련 문제