>백엔드 개발 >파이썬 튜토리얼 >Python 확장 내장형 구현 방법 분석

Python 확장 내장형 구현 방법 분석

黄舟
黄舟원래의
2017-10-17 10:26:341688검색

이 글에서는 주로 Python에서 내장형 확장 방법을 소개합니다. Python에서 내장형 확장과 하위 클래스 확장의 구체적인 구현 기술을 예제를 기반으로 분석합니다.

예제는 다음과 같습니다. 이 문서에서는 Python 내장 유형의 메서드 확장 구현을 설명합니다. 다음과 같이 참조할 수 있도록 모든 사람과 공유하세요.

소개

새로운 유형의 객체 메서드를 구현하는 것 외에도 때로는 Python 내장 유형을 확장하여 다음과 같은 다른 유형의 데이터 구조를 지원할 수도 있습니다. 대기열 삽입 및 삭제를 위한 Add 메서드를 나열합니다. 이 문제에 대한 응답으로 이 기사에서는 컬렉션 함수 구현의 예를 결합하여 Python의 내장 유형을 확장하는 두 가지 방법, 즉 내장 유형을 내장하여 유형을 확장하고 서브클래싱을 통해 유형을 확장하는 방법을 소개합니다.

내장 유형을 내장하여 확장

다음 예제에서는 목록 개체를 내장 유형으로 사용하여 컬렉션 개체를 구현하고 일부 연산자 오버로딩을 추가합니다. 이 클래스는 Python의 목록과 추가 집합 작업을 래핑합니다.


class Set:
  def __init__(self, value=[]): # Constructor
    self.data = [] # Manages a list
    self.concat(value)
  def intersect(self, other): # other is any sequence
    res = [] # self is the subject
    for x in self.data:
      if x in other: # Pick common items
        res.append(x)
    return Set(res) # Return a new Set
  def union(self, other): # other is any sequence
    res = self.data[:] # Copy of my list
    for x in other: # Add items in other
      if not x in res:
        res.append(x)
    return Set(res)
  def concat(self, value): # value: list, Set...
    for x in value: # Removes duplicates
      if not x in self.data:
        self.data.append(x)
  def __len__(self):     return len(self.data) # len(self)
  def __getitem__(self, key): return self.data[key] # self[i]
  def __and__(self, other):  return self.intersect(other) # self & other
  def __or__(self, other):  return self.union(other) # self | other
  def __repr__(self):     return 'Set:' + repr(self.data) # print()
if __name__ == '__main__':
  x = Set([1, 3, 5, 7])
  print(x.union(Set([1, 4, 7]))) # prints Set:[1, 3, 5, 7, 4]
  print(x | Set([1, 4, 6])) # prints Set:[1, 3, 5, 7, 4, 6]

하위 클래스를 통해 유형 확장

Python 2.2부터 모든 내장 유형은 list, str, dict 및 tuple과 같은 하위 클래스를 직접 생성할 수 있습니다. 이를 통해 사용자 정의 클래스 문을 통해 내장 유형을 사용자 정의하거나 확장할 수 있습니다. 유형 이름을 하위 클래스화하고 사용자 정의합니다. 유형의 하위 유형 인스턴스는 원래 내장 유형이 나타날 수 있는 모든 곳에서 사용할 수 있습니다.


rreee

위 내용은 Python 확장 내장형 구현 방법 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.