Найти - Пользователи
Полная версия: Это индусский код или правильный выход?
Начало » Python для новичков » Это индусский код или правильный выход?
1
Atterratio
Есть два класса, в каждом из которых несколько методов. В первом классе инициализируется второй, но потом есть необходимость из второго класса вызвать метод первого, или изменить атрибут. Сейчас в таких случаях я передаю “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()
Я правильно делаю, или такая ситуация возникает потому что я ничего не смыслю в ООП?
PooH
Atterratio
В первом классе специализируется второй
Очень расплывчато описали. Но если речь идет именно о специализации, то класс Two должен наследовать от One
Atterratio
Не специализируется, а инициализируется. Это я воспользовался автоисправлением в FF не посмотрев.
Lexander
+1 за наследование.
Вот, например: http://www.python.org/download/releases/2.2.3/descrintro/#cooperation
Atterratio
Не… тогда бы мне было проще в один класс объеденить… по классам то вообще разделено потому, что дин гласс отвечает за Gui а второй за сервервер принимающий сообщения(т.е. разделено по смысловой нагрузке).
Lexander
А зачем тогда одному классу менять атрибуты второго?
Atterratio
Lexander
А зачем тогда одному классу менять атрибуты второго?
Что бы вывести в Gui то что получено по сети. Так… и вообще почему мы начали конкретизировать ситуацию.
Конкретный вопрос: “Как соотносится с правилами написания хорошего кода передача первого объекта, во второй инициированный в первом, для последующего вызова методов первого объекта из второго?”



Нифига себе, спам)))
Ed
Atterratio
Как соотносится с правилами написания хорошего кода передача первого объекта, во второй инициированный в первом, для последующего вызова методов первого объекта из второго?
плохо соотносится.
Soteric
А по-моему нормально :) Похоже на MVP паттерн. One - это Presenter, Two - это View. Один отвечает за логику и связь с моделью. Другой управляет виджетами и слушает события со стороны пользователя.
Atterratio
Из-за разброда тут я поразмышлял сам, и решил, что это работает, и вполне приемлемо, если не запутывает логику программы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB