Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2015 14:22:36

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

Приветствую всех.

Подскажите пожалуйста, как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?
У меня есть класс, в котором к примеру 2 метода:
- 1ый метод генерирует информацию, передает ее 2ому методу
- 2ой метод обрабатывает полученное инфо и записывает в бд
- все повторяется, пока 1ый метод не перестанет генерировать информацию

По окончанию этого “цикла” мне нужно запустить код, который бы вывел отчет о проделанной работе.
Первым делом пришла мысль как то перехватить вот этот вывод, который отображается по завершению выполнения класса: <our_module.Our_Class object at 0x7fc000353518>. Мол, если он выводится, то сначала запустить код отчета, а потом собственно отобразить этот вывод. Можно ли так сделать? Как? Или есть более правильный способ?

Благодарю.

Отредактировано TitanFighter (Ноя. 11, 2015 14:24:06)

Офлайн

#2 Ноя. 11, 2015 14:39:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

Приведи код.



Офлайн

#3 Ноя. 11, 2015 14:45:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

Офлайн

#4 Ноя. 11, 2015 14:45:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

Офлайн

#5 Ноя. 11, 2015 16:11:02

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

py.user.next
Приведи код.
Во время написания примера дошло, что у меня есть __init__, в конец которого можно всунуть то, что мне нужно
our_dict = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
def report():
    print(x.summ)
class Start:
    a=0
    summ=[]
    def __init__(self):
        self.one(our_dict)
        report() # добавил нужную мне функцию :)
    def one(self, d):
        for item in d:
            a=0
            for num in d[item]:
                a+=num
            self.two(a)
            
    def two(self, num):
        self.summ.append(num)
FishHook
Спасибо за полезный линк. Есть мысли пересмотреть свой код.

Отредактировано TitanFighter (Ноя. 11, 2015 16:12:08)

Офлайн

#6 Ноя. 12, 2015 03:18:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

TitanFighter
Во время написания примера
Я так и думал, что ты не знаешь, зачем нужны классы.

Нужно сделать класс, у которого методы не зависят друг от друга, а потом написать функцию, которая использует этот класс (его экземпляр), вызывая его методы, как надо.



Офлайн

#7 Ноя. 12, 2015 13:10:18

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

py.user.next
Нужно сделать класс, у которого методы не зависят друг от друга, а потом написать функцию, которая использует этот класс (его экземпляр), вызывая его методы, как надо.
Т.е. сделать так, чтоб внутри класса один метод ничего не передавал другому, а сделать функцию, которая будет получать данные от первого метода и передавать эти данные второму методу? Правильно? Т.е. функция выступает “буфером” между методами?

Отредактировано TitanFighter (Ноя. 12, 2015 13:11:32)

Офлайн

#8 Ноя. 12, 2015 13:30:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

TitanFighter
Т.е. функция выступает “буфером” между методами?
Функция использует класс для достижения результата. А класс - это единица, которая умеет работать с данными разными способами.

Например, обычный список (list) - это класс, который умеет работать с элементами. Его методы insert(), append(), pop() друг с другом не связаны никак.



Офлайн

#9 Ноя. 12, 2015 13:41:12

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

Понял. Исправлю) Спасибо!
Едит: Навел порядок в своих классах. Сейчас смотрю на тот бардак и думаю, какой был кошмар. Через функцию управлять всем стало предельно удобно, а еще смог порешать несколько проблем.
Еще раз спасибо!)

Отредактировано TitanFighter (Ноя. 13, 2015 00:26:55)

Офлайн

#10 Ноя. 12, 2015 13:44:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?

py.user.next
Его методы insert(), append(), pop() друг с другом не связаны никак.

А если insert, это append в цикле?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version