Форум сайта python.su
что такое self, это типа сылка на подразумеваемый экземпляр класса? и не совсем понятно что такое __init__?
Офлайн
Dive into Pythonself - это обращение к созданному екземпляру класса.
Метод __init__ вызывается сразу после создания экземпляра класса. Соблазнительно, но не правильно называть этот метод конструктором. Соблазнительно, потому что он выглядит как конструктор (принято, чтобы __init__ был первым методом, определенным в классе), ведет себя как коструктор (это перый кусок кода, вызываемый в созданном экземпляре класса) и даже называется как коструктор. Неправильно, так как к тому времени, когда вызывается метод __init__, объект уже создан и вы имеете ссылку на созданный экземпляр класса. Но метод __init__ — это самое близкое к конструктору, из того что есть в языке Python.
Офлайн
regallа для чего он нужен что он делает этот __init__, я видел классы где __init__ не первый метод в классе!
Офлайн
я пока новичек, но насколько знаю перед __init__ вроде может быть __new__, но это редкий случай.
ну и __init__ не обязательно должен быть записан первым (выше по тексту), он просто вызывается первым.
Офлайн
Все не так.
__new__ - это метод класса, который создаёт новый экземпляр класса, тогда как __init__ инициализирует атрибуты объекта.
__init__ вызывается сразу после __new__. Эта связка вызывается всегда при создании нового объекта.
Порядок записи методов значения не имеет.
self - это ссылка на самого себя.
Офлайн
Ferromanизвини я не совсем понимаю что значит на самого себя, помогите понять!
Офлайн
да self это ссылка на экземпляр класса, аналог this в java. __init__ это что то типа конструктора.
Офлайн
> извини я не совсем понимаю что значит на самого себя, помогите понять!
Смотри.. у тебя есть группа в университете. Это класс… он состоит из экземпляров (это ты, Петя, Вася, Лена)…
Воть.. НУ, и тут ты хочешь, чтобы при создании этого класса у каждого студента была красная курточка.
Ты можешь после создания каждого экземпляра (Вася, Петя, Лена) написать
Vasya.kurtochka_color = 'red'
Petya.kurtochka_color = 'red'
...
self.kurtochka_color = 'red'
Отредактировано (Окт. 22, 2009 16:02:24)
Офлайн
vaxXxaкласс спасибо все я прозрел! если можешь еще в таком же духе про __init__ и __new__ объясни!
Офлайн
Нет немного не так.
К примеру есть класс ААА. У него есть аттрибут(переменная, поле …. кто как называет) myAttr. И у него же есть метод useMeth, который должен при вызове изменить параметр myAttr. Как это сделать?
class AAA ():
myAttr="Empty"
## def __init__(self):
## self.myAttr = "__init__: Not Empty"
def useMeth(self):
self.myAttr= "useMeth: Not Empty"
"Пробуем использовать"
Var=AAA()
print(Var.myAttr)
Var.useMeth()
print(Var.myAttr)
Отредактировано (Окт. 22, 2009 17:58:37)
Офлайн