TransWikia.com

¿Terminar ejecucion de una clase en python?

Stack Overflow en español Asked by Isaac Martinez on February 19, 2021

Estoy intentando que al ejecutar una función la clase que estoy ejecutando termine, y siga con la siguiente instrucción o línea de código sin terminar el programa en si.

Yo Intente hacerlo con la siguiente Función:

def end(self):
    while(1 != 0):
        break

El cual si funciona pero me gustaría saber si hay alguna otra forma de hacerlo.

Código (para entrar un poco más en contexto):

app.py (inicio del programa)

from classes.order import SortFile

class Main:
    def __init__(self):
        super().__init__()
        sort_file = SortFile()
        sort_file.start()


if __name__ == "__main__":
    Main()

order.py (esta clase tan se encarga de elegir las funciones a realizar)

from classes.menu import Selection
from classes.controllers import FolderController
from classes.functions.someFuncs import clear_console

class SortFile:
    __selector = Selection()
    __folder_controler = FolderController()
    __folders_register = []

    def __init__(self):
        super().__init__()

    def start(self):
        self.__selector.start() #me gustaría terminar la ejecución de 
                                #esta clase (o la función)
        self.__get_selected()   #para continuar con esta función
        print(self.__folders_register)

    def __get_selected(self):
        clear_console()
        for num in self.__selector.response():
            self.__check_selection(num)

    def __check_selection(self, num):
        controller = self.__folder_controler

        def enter(data):
            self.__folders_register.append(data)

        if(num == 1):
            enter(controller.documents())
        elif(num == 2):
            enter(controller.downloads())
        elif(num == 3):
            enter(controller.music())
        elif(num == 4):
            enter(controller.pictures())
        elif(num == 5):
            enter(controller.telegran_desktop())

menu.py (se encarga de hacer los print y obtener los datos del usuario y almacenarlos)

from classes.functions.someFuncs import do_a_print, clear_console
from time import sleep


class Selection:
    __menu = """
    -> Select The folders to order <-
    ---------------------------------
    ->      1 Documents             -
    ->      2 Downloads             -
    ->      3 Music                 -
    ->      4 Pictures              -
    ->      5 Telegram Download     -
    ->      6 Hacer todos           -
    ---------------------------------
    ->      7 Seleccion multiple    -
    ->  Cualquier otra tecla salir  -
    ---------------------------------
    """
    __selected_option = ''
    __to_do = []

    def __init__(self):
        super().__init__()

    def __single_selection(self):

        res = "Inserte un valor:"
        self.__selected_option = do_a_print(self.__menu, True, res)

    def __multi_selection(self):
        res = "Inserte los valores (precione "d" para finalazar selecion):"
        self.__selected_option = do_a_print(self.__menu, True, res)

    def __detect_print_menu(self, is_multi):
        clear_console()
        if(is_multi):
            self.__multi_selection()
        else:
            self.__single_selection()

    def __selector(self, is_multi=False):
        self.__detect_print_menu(is_multi)
        self.__do_selection(is_multi)

    def __do_selection(self, is_multi):
        s = self.__selected_option
        if(str.isdigit(s)):
            value = int(s)
            if(value == 7):
                self.__selector(True)
            else:
                self.__insert_data(value, is_multi)
        elif(s == "d" or "D"):
            self.end()
        else:
            do_a_print(f"{s} no es un valor valido")
            sleep(1.5)
            self.start()

    def __insert_data(self, data, is_multi):
        self.__to_do.append(data)
        if(is_multi):
            self.__selector(True)
        else:
            self.end()

    def start(self):
        self.__selector()

    def response(self):
        return self.__to_do

    def end(self):
        while(1 != 0):
            break

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP