Форум сайта python.su
,,?
Офлайн
Эм???
А что должен делать второй __init__?
И что вообще должен делать __init__ в ФУНКЦИИ? ;)
Отредактировано (Окт. 21, 2008 01:22:48)
Офлайн
Все дружно включили телепатию :)
Может это из разряда
class Parent(object):
def __init__(self, x):
self.x = x
class Child(Parent):
def __init__(self, x, y):
super(Child, self).__init__(x)
self.y = y
Офлайн
гм.. я думал вы лучшие телепаты))) вы должны были протелепатировать, что у мя зашли шарики за ролики))
включил мозги и понял, что реально дурацкий вопрос…
но все же, вот например когда я создаю экземпляр класса там обязательно запускается __init__, так? а если я хочу создать экземпляр класса чтоб потом нормально запускать из него функции, не запуская __init__, который там обязательно присутствует, а запуская __init2__ или вообще ниче не запуская.. как это сделать,? или я опять какой то бред спросил,… ато чето мозг не работает щас(?
Офлайн
Ну как нормальный телепат я тебе и телепатировал в мозг, что у тебя шарики за ролики заехали. И то что ты написал это в форуме, гвоорит о том, что транзакция прошла успешно.
124bitНа всякий случай уточняю, что __init__ - это конструктор класса, он вызывается когда создается экземпляр класса ( но не когда вызывается какая-нибудь функция).
но все же, вот например когда я создаю экземпляр класса там обязательно запускается __init__, так? а если я хочу создать экземпляр класса чтоб потом нормально запускать из него функции, не запуская __init__, который там обязательно присутствует, а запуская __init2__ или вообще ниче не запуская.. как это сделать,? или я опять какой то бред спросил,… ато чето мозг не работает щас(?
class o:
def __init__(self, flag = False):
if flag:
self.__init2__()
else:
self.__init3__()
def __init2__(self):
pass
def __init3__(self):
pass
o1 = o()
o2 = o(True)
Отредактировано (Окт. 21, 2008 01:47:49)
Офлайн
Хе, надо добавлять группу телепаты на форум :).
Офлайн
shizaКонечно, полемика, но… в питоне конструктором является метод __new__ - именно он создает и возвращает экземпляр класса. __init__ только модифицирует его (в обязательном порядке, если метод __new__ отработал успешно).
На всякий случай уточняю, что __init__ - это конструктор класса, он вызывается когда создается экземпляр класса ( но не когда вызывается какая-нибудь функция).
Офлайн
ZANЭто да, но лучше туда без крайней нужды не лазить imho =)
Конечно, полемика, но… в питоне конструктором является метод __new__ - именно он создает и возвращает экземпляр класса. __init__ только модифицирует его (в обязательном порядке, если метод __new__ отработал успешно).
Офлайн
Это точно :)
Офлайн
import new
class A:
def init1(self):
pass
def init2(self):
pass
a1 = new.instance(A)
a1.init1()
a2 = new.instance(A)
a2.init2()
>>> class A:
...
... def __init__(self):
... assert False
...
... @classmethod
... def create1(cls):
... import new
... self = new.instance(cls)
... self.name = 'create1'
... return self
...
... @classmethod
... def create2(cls):
... import new
... self = new.instance(cls)
... self.name = 'create2'
... return self
...
>>> A.create1().name
'create1'
>>> A.create2().name
'create2'
Отредактировано (Окт. 23, 2008 00:31:18)
Офлайн