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

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

Почему функция «индекс» имеет «я»?Что такое (self) в коде python? (Вопрос ООП)

Я получил этот код из Пилоны контроллера

+1

Дубликат всех этих: http://stackoverflow.com/search?q=python+self. В частности, http://stackoverflow.com/questions/2709821/python-self-explained –

ответ

2

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

Например:

c = MyController() 
c.index() 

бы назвал index с self равным c. self - это стандартное имя, но вы можете называть его любым, что угодно

+0

Тогда можно ли использовать «self» внутри функции «index»? print self.value – TIMEX

+0

@alex Да, если 'MyController' имеет что-то с именем' value' (поле, функция и т. д.) –

+0

Если я объявляю класс, а затем я помещаю в него функции, могу ли я поставить «я» как аргумент в каждой из этих функций? Рекомендуется ли иметь «я» в качестве первого аргумента для всех из них, за которым следуют другие аргументы? – TIMEX

3

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

1

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

Смежные вопросы