2012-06-20 5 views
0

장고 자습서를 살펴보고 views.py에서 같은 이름의 함수가 2 개있을 때 어떤 일이 발생하는지 궁금합니다. 예를 들어장고보기 기능을 서로 재정의 할 수 있습니까?

: 나는 코드를 실행할 때

def results(request, poll_id): 
    p = get_object_or_404(Poll, pk=poll_id) 
    return render_to_response('polls/results.html', {'poll': p}) 

def results(request, poll_id): 
    return HttpResponse("You're looking at the results of poll %s." % poll_id) 

, 아래 함수가 호출 된 하나였다. 이게 어떻게 작동합니까? 내가 착각하고 있지 않다 경우

답변

5

파이썬에서 메소드와 함수는 여러 가지 인수를 취할 수 있습니다. 서로 다른 유형의 인수를 지원하기 위해 서로 다른 "서명"을 가질 필요가 없습니다. 함수 오버로딩의 일반적인 사용 사례입니다. 파이썬 문서에서 4.7.3. Arbitrary Argument Lists을 참조하십시오.

두 번째 메서드가 호출되는 이유는 메서드 정의를 동일한 이름 (및 같은 인수 목록)으로 정의 할 때 메서드 정의를 단순히 덮어 쓰기 때문입니다. 파이썬의 경우 다음과 동일합니다.

>>> x = 1 
>>> x = 'Hello' 
>>> print x 
Hello 

다시 정의하여 방금 마지막 정의를 사용합니다.

1

, 당신은 문 : 당신에

https://docs.djangoproject.com/en/dev/topics/class-based-views/

예 것 "만일"당신이 확장하거나보기 메소드를 오버라이드 (override) ... 또는 사용이 필요한 경우 클래스를 사용할 필요가 , 그저 파이썬의 정상적인 동작은 ... 파일을 왼쪽 위에서 읽습니다. 그러면 파일이 컴파일되어 사용됩니다 ...

관련 문제