Форум сайта python.su
Есть два класса, в каждом из которых несколько методов. В первом классе инициализируется второй, но потом есть необходимость из второго класса вызвать метод первого, или изменить атрибут. Сейчас в таких случаях я передаю “self” из первого во второй. Выглядит это примерно так:
class One:
def __init__(self):
pass
def some_metod_one(self):
self.classTwo = Two(self)
#Можно передавать не при инициализации, а при вызове метода, но это мелочи.
self.classTwo.some_metod_one()
def some_metod_two(self):
print('Выполнено!')
class Two:
def __init__(self, classOne):
self.classOne = classOne
def some_metod_one(self):
self.classOne.some_metod_two()
if __name__ == '__main__':
classOne = One()
classOne.some_metod_one()
Отредактировано (Дек. 9, 2011 10:31:17)
Офлайн
AtterratioОчень расплывчато описали. Но если речь идет именно о специализации, то класс Two должен наследовать от One
В первом классе специализируется второй
Офлайн
Не специализируется, а инициализируется. Это я воспользовался автоисправлением в FF не посмотрев.
Офлайн
+1 за наследование.
Вот, например: http://www.python.org/download/releases/2.2.3/descrintro/#cooperation
Офлайн
Не… тогда бы мне было проще в один класс объеденить… по классам то вообще разделено потому, что дин гласс отвечает за Gui а второй за сервервер принимающий сообщения(т.е. разделено по смысловой нагрузке).
Офлайн
А зачем тогда одному классу менять атрибуты второго?
Офлайн
LexanderЧто бы вывести в Gui то что получено по сети. Так… и вообще почему мы начали конкретизировать ситуацию.
А зачем тогда одному классу менять атрибуты второго?
Отредактировано (Дек. 10, 2011 02:21:22)
Офлайн
Atterratioплохо соотносится.
Как соотносится с правилами написания хорошего кода передача первого объекта, во второй инициированный в первом, для последующего вызова методов первого объекта из второго?
Офлайн
А по-моему нормально :) Похоже на MVP паттерн. One - это Presenter, Two - это View. Один отвечает за логику и связь с моделью. Другой управляет виджетами и слушает события со стороны пользователя.
Офлайн
Из-за разброда тут я поразмышлял сам, и решил, что это работает, и вполне приемлемо, если не запутывает логику программы.
Офлайн