2014-10-21 3 views
1

코드의 일부가 있습니다. 나는 그것이 튜플의 목록입니다 알고있는 것처럼Python : 클래스 인스턴스 생성

application = webapp2.WSGIApplication([ 
    ('/', MainPage), 
    ('/gbook', Guestbook) 
]) 

: 내가 틀렸다면

[('/', MainPage), ('/gbook', Guestbook)] 

은 제발 수정합니다.

그리고 질문 : MainPage 클래스 및 방명록 인스턴스의 명확한 생성은 어디에 있습니까? 그런

뭔가 :이,이 튜플 ('/', MainPage)에 의해 다음 내 질문에 발생하면 x = MainPage('/')

: 그것은 어떻게됩니까?

몇 가지 설명이 필요합니다.

+0

예, 튜플 목록입니다. * "인스턴스의 명백한 생성은 어디에서 ..."* - 당신이 보여주는 코드에는 아무 것도 없습니다. 문제의 코드를 표시하지 않는 경우 특히 코드에 대한 설명이 여기에 있습니다. – jonrsharpe

답변

3

WSGIApplication 자체적으로 클래스의 인스턴스를 만듭니다. 파이썬에서는 클래스의 인스턴스를 전달하는 것처럼 클래스를 전달할 수 있습니다. 예를 들면 :

class A: 
    def __init__(self): 
     print "A Created" 

def foo(cls): 
    inst = cls() 

foo(A) 

당신은 그것을 인쇄 할이 스크립트를 실행하면 "A 만든"해당 클래스의 새로운 인스턴스를 만드는 foo에 클래스를 전달하기 때문에.

+0

깔끔한 트릭! 고마워요! –

+0

작은 또 다른 질문 : 클래스 A의 변수에 액세스 할 수있는 방법이 있습니까? –

+0

예, 파이썬의 다른 모든 것과 같습니다. – tantalum

0

webapp2의 소스 코드를 확인하여 확인할 수 있습니다. WSGIApplication__init__ 기능에

는 목록 '[('/', MainPage),('/gbook', Guestbook)]'는 그 때 Route 클래스에서 인스턴스화됩니다 변수 routes로 전달됩니다.

관련 문제