Найти - Пользователи
Полная версия: Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?
Начало » Python для новичков » Как сделать так, чтоб в конце завершения класса выполнился еще кусок кода?
1 2 3
TitanFighter
Приветствую всех.

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

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

Благодарю.
py.user.next
Приведи код.
FishHook
http://effbot.org/zone/python-with-statement.htm
FishHook
http://effbot.org/zone/python-with-statement.htm
TitanFighter
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
Спасибо за полезный линк. Есть мысли пересмотреть свой код.
py.user.next
TitanFighter
Во время написания примера
Я так и думал, что ты не знаешь, зачем нужны классы.

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

Например, обычный список (list) - это класс, который умеет работать с элементами. Его методы insert(), append(), pop() друг с другом не связаны никак.
TitanFighter
Понял. Исправлю) Спасибо!
Едит: Навел порядок в своих классах. Сейчас смотрю на тот бардак и думаю, какой был кошмар. Через функцию управлять всем стало предельно удобно, а еще смог порешать несколько проблем.
Еще раз спасибо!)
FishHook
py.user.next
Его методы insert(), append(), pop() друг с другом не связаны никак.

А если insert, это append в цикле?
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