내장 클래스를 포함하여 클래스를 확장하는 또 다른 방법 (특히 의미, 새 메소드 추가, 기존 메소드 추가)은 Python 자체의 범위를 벗어나 확장하는 기능을 추가하는 전처리기를 사용하여 확장을 다음으로 변환하는 것입니다. 파이썬이 실제로 그것을보기 전에 일반적인 파이썬 구문.
str()
예를 들어 Python 2의 클래스 를 확장하기 위해이 작업을 수행했습니다 . str()
때문에 같은 인용 데이터에 내재 결합의 특히 흥미로운 대상 'this'
과 'that'
.
다음은 일부 확장 코드입니다. 여기에서 추가 된 유일한 비 Python 구문은 extend:testDottedQuad
비트입니다.
extend:testDottedQuad
def testDottedQuad(strObject):
if not isinstance(strObject, basestring): return False
listStrings = strObject.split('.')
if len(listStrings) != 4: return False
for strNum in listStrings:
try: val = int(strNum)
except: return False
if val < 0: return False
if val > 255: return False
return True
그 후 전처리기에 공급되는 코드를 작성할 수 있습니다.
if '192.168.1.100'.testDottedQuad():
doSomething()
dq = '216.126.621.5'
if not dq.testDottedQuad():
throwWarning();
dqt = ''.join(['127','.','0','.','0','.','1']).testDottedQuad()
if dqt:
print 'well, that was fun'
전처리 기가 그걸 먹고, 몽키 패칭없이 일반 파이썬을 뱉어 내고, 파이썬은 내가 의도 한대로합니다.
ac 전처리 기가 c에 기능을 추가하는 것처럼 Python 전처리기도 Python에 기능을 추가 할 수 있습니다.
내 처리기 구현은 스택 오버플로 답변이 너무 크지 만 관심이있을 수있는 사람들을 위해, 그것은이다 여기 GitHub의에.