class MyController(BaseController):

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

Почему функция «index» имеет «self»?

Я получил этот код от контроллера Pylons

1
TIMEX 2 Июн 2010 в 23:19

3 ответа

Лучший ответ

Это функция-член (функция, являющаяся частью класса), поэтому при вызове объект, к которому она была вызвана, автоматически передается в качестве первого аргумента.

Например:

c = MyController()
c.index()

Вызовет index с self равным c. self - стандартное имя, но вы можете называть его как угодно

2
Michael Mrozek 2 Июн 2010 в 19:21

Многие языки, такие как C ++ и Java, имеют неявный указатель внутри функций-членов. В этих языках это «это». Python, с другой стороны, требует, чтобы этому указателю было присвоено EXPLICIT-имя. По соглашению, это «я», хотя вы можете поместить туда все, что вам нравится, если это допустимый идентификатор.

3
Arcane 2 Июн 2010 в 19:28

Каждый раз, когда вызывается метод в объекте, первый параметр, передаваемый этому методу, является самим объектом. Если вы не определите первый параметр как объект, который вы используете, вы получите исключение TypeError.

1
Ishpeck 2 Июн 2010 в 19:33