2010-06-02 6 views
1
class MyController(BaseController): 

    def index(self): 
     # Return a rendered template 
     #return render('/test.mako') 
     # or, return a response 
     return '' 

"index"함수에 "self"가있는 이유는 무엇입니까? 파이썬 코드에서 (self) 란 무엇입니까? (OOP 질문)

나는 철탑 컨트롤러

+1

중복 된 것들 : http://stackoverflow.com/search?q=python+self. 구체적으로 http://stackoverflow.com/questions/2709821/python-self-explained –

답변

2

그것은 멤버 함수 (클래스의 일부 기능)의에서이 코드를 가지고, 그래서이 호출 할 때, 그것은 호출 된 개체가 자동으로 첫 번째 인수로 전달됩니다. 예를 들어

:

c = MyController() 
c.index() 

c 동일 selfindex을 부를 것이다. self은 표준 이름이지만 원하는 것으로 부를 수 있습니다.

+0

그럼 함수 "index"안에서 "self"를 사용할 수 있습니까? print self.value – TIMEX

+0

@alex 'MyController'에'value'라는 이름의 것이 있으면 (필드, 함수 등) –

+0

클래스를 선언하고 그 안에 함수를 넣으면 "self"를 넣을 수 있습니까? 그 모든 기능의 논쟁? 모두의 첫 번째 인수로 "self"를 사용하고 다른 인수는 뒤에 오는 것이 좋습니다? – TIMEX

3

C++ 및 Java와 같은 많은 언어는 멤버 함수 내부에 암시 적 포인터를 가지고 있습니다. 그 언어들에서, 그것은 "this"입니다. 반면에 파이썬은 해당 포인터에 EXPLICIT 이름을 부여해야합니다. 관습에 따라, 그것은 "자기"입니다. 비록 당신이 실제로 유효한 식별자라면 거기에 원하는 것을 넣을 수 있습니다.

1

개체의 메서드가 호출 될 때마다 해당 메서드에 전달되는 첫 번째 매개 변수는 개체 자체입니다. 첫 번째 매개 변수를 사용중인 개체로 정의하지 않으면 TypeError 예외가 발생합니다.