Форум сайта python.su
0
Здравствуйте, что я неправильно делаю и как это можно исправить?
Почему второй класс не видит унаследованные переменные из первого класса?
class className1(object): def __init__(self): self.param1 = 'param1' self.cl_className2 = className2() class className2(className1): def __init__(self): print self.param1 className1()
<<< Traceback (most recent call last): <<< File "<string>", line 8, in <module> <<< File "<string>", line 4, in __init__ <<< File "<string>", line 7, in __init__ <<< AttributeError: 'className2' object has no attribute 'param1'
Отредактировано Unnamed001 (Янв. 11, 2016 23:10:18)
Офлайн
49
Или super или явный вызов __init__ родителя…
Отредактировано 4kpt_IV (Янв. 11, 2016 23:11:42)
Офлайн
0
Можете пожалуйста на моем примере показать, как нужно прописать super в __init__ в className2, так чтобы self у наследовался полностью с className1?
Отредактировано Unnamed001 (Янв. 23, 2016 15:01:55)
Офлайн
24
class className1(object): def __init__(self): self.param1 = 'param1' class className2(className1): def __init__(self): super(className2, self).__init__() print self.param1 className2()
Офлайн
0
Подскажите пожалуйста, а если вот такой вызов, как быть с super'ом?
class className1(object): def __init__(self): self.param1 = 'YES' self.className2 = className2() class className2(className1): def __init__(self): print self.param1 className1()
<<< AttributeError: 'className2' object has no attribute 'param1'
Офлайн
221
Unnamed001
а вам не кажется логическим противоречием наличие в объекте А объекта Б который основывается на объекте А?
Офлайн
0
JOHN_16
Unnamed001а вам не кажется логическим противоречием наличие в объекте А объекта Б который основывается на объекте А?
Офлайн
49
Unnamed001
Нет, потому что таких объектов как Б будет много (В,Г,Д,..), а объект А основной который вызывает их, как модуль.
Офлайн