Хотя ответ Мартджина великолепен, я собираюсь расширить его в некоторых, скажем, терминах «более низкого уровня».
По сути, всякий раз, когда вы создаете новый объект GraphRegion (myobject = GraphRegion(master)
), __init__
вызывается с новым объектом в качестве первого параметра (self
) и аргументом master
в качестве второго параметра.
В принципе, если вы сделаете это:
myobject = GraphRegion(master)
__init__
get вызывается так:
__init__(myobject, master)
Это связано с тем, что вы часто хотите присвоить свойства конкретным экземплярам объекта, и self позволяет вам это сделать. Например, если бы у меня был класс Movie, где у каждого экземпляра был бы собственный заголовок, я бы использовал self
следующим образом:
class Movie(object):
def __init__(self, title):
self.title = title
Таким образом, каждый экземпляр Movie
может иметь собственный заголовок.
Теперь всякий раз, когда вы запускаете Frame.__init__(self, master)
, этой функции __init__
часто требуется модифицировать конкретный экземпляр класса GraphRegion, который вы создаете (объект, который вы создаете), и self является этим экземпляром, поэтому вы передаете его методу __init__
.
person
Thomas Hobohm
schedule
03.08.2014