Problem z importem modułu z klasy

0

Witam,
mam problem z importem modułu,

class Name1:
    def __init__(self):
        pass
    
    def a(self):
        pass
    
    def b(self):
       return # obliczenia z modułu b

potrzebuję zaimportować moduł b do klasy Name2

class Name2:
    def __init__(self):
        pass
    
    def a(self):
       import..
       code

import jest w module - wiem, ze to nie eleganckie ale obie klasy od siebie zależą i inaczej mam błąd cyrkulacji.

importuję Name1(self.root).b() - ogólnie kod z b mi się wywołuje ale przy okazji też otwiera mi się cała klasa Name1 (dokładnie cały widget z tkinter) a ja potrzebuę sam wynik z b, co robię nie tak? Proszę o pomoc, za co z góry dziękuję :D

2

Jak wygląda ten import, Name1(self.root).b()? Nie możesz, from <module_name> import name1?

0
lion137 napisał(a):

Jak wygląda ten import, Name1(self.root).b()? Nie możesz, from <module_name> import name1?
def get_calc(self):
from GUI.module.gallery import Gallery

0
lion137 napisał(a):

Jak wygląda ten import, Name1(self.root).b()? Nie możesz, from <module_name> import name1?

Robi mi się coś takiego a potrzebuję mieć samo pole tekstowe, i jeszcze na dodatek przesuwa mi się wszytko..

screenshot-20221006140006.png

0

Sorry, ale nie wiem o co Ci chodzi, z tego co podałeś, nie da się zreprodukować problemu.

0
lion137 napisał(a):

Sorry, ale nie wiem o co Ci chodzi, z tego co podałeś, nie da się zreprodukować problemu.

Wiem, ale nie mogę podać kodu bo bym musiał całą pakę wrzucić. Mam tylko pytanie jak po prostu zaimportować jakiś konkrety wynik z jednej metody klasy do innej metody innej klasy w innym module? Chyba że to nie jest takie oczywiste i sam muszę powalczyć z całym kodem..

51

import jest w module - wiem, ze to nie eleganckie ale obie klasy od siebie zależą i inaczej mam błąd cyrkulacji.

Powtórzę się z poprzedniego wątku. Rozwiąż problem z cyrkulacją zamiast szukać drogi na skróty, czy jakiś dziwnych hotfixów.

0

Ok, dziękuję za wskazówkę. Powalczę z tym.

2

@Mr Coin:

Nie ucz się importu w metodzie, choć Python dopuszcza. To jest specyficzny dziwoląg tego języka, owszem, czasem się to stosuje celowo (gdy moduł ma alternatywne implermentacje o tej samej funkcjonalności) , ale normalnym importem jest w nagłówku kodu, w pierwszych liniach

Masz brata bliżnkaka @progcet98 ? Tak samo tłuczecie głową w mur z tymi importami "dynamicznymi"

0
ledi12 napisał(a):

import jest w module - wiem, ze to nie eleganckie ale obie klasy od siebie zależą i inaczej mam błąd cyrkulacji.

Powtórzę się z poprzedniego wątku. Rozwiąż problem z cyrkulacją zamiast szukać drogi na skróty, czy jakiś dziwnych hotfixów.

Nie zdziwlbym się, jakby były podane realne klasy, i KoszykJabłek dziedziczył z Jabłka

0
ZrobieDobrze napisał(a):
ledi12 napisał(a):

import jest w module - wiem, ze to nie eleganckie ale obie klasy od siebie zależą i inaczej mam błąd cyrkulacji.

Powtórzę się z poprzedniego wątku. Rozwiąż problem z cyrkulacją zamiast szukać drogi na skróty, czy jakiś dziwnych hotfixów.

Nie zdziwlbym się, jakby były podane realne klasy, i KoszykJabłek dziedziczył z Jabłka

Udało mi się tylko zastanawiam się czy z takiej lamby da się wyciągnąć wartość z funkcji bo póki co dostaję obiekt?

from GUI.module.gallery import Gallery

class GetHelp:

    def __init__(self, root=None):
        self.root = root

    def get_open_link(self):
        a = lambda: Gallery(self.root).get_test1()
        print(a)
        return a
   
1
Mr Coin napisał(a):
from GUI.module.gallery import Gallery

class GetHelp:

    def __init__(self, root=None):
        self.root = root

    def get_open_link(self):
        a = lambda: Gallery(self.root).get_test1()
        print(a)
        return a
   

Tworzysz nową galerię aby pobrać z niej jakieś dane?

0
_13th_Dragon napisał(a):
Mr Coin napisał(a):
from GUI.module.gallery import Gallery

class GetHelp:

    def __init__(self, root=None):
        self.root = root

    def get_open_link(self):
        a = lambda: Gallery(self.root).get_test1()
        print(a)
        return a
   

Tworzysz nową galerię aby pobrać z niej jakieś dane?

Tak, będę analizował obrazy - sieci neuronowe. Zmieniłem zawód i pracuję jako programista od miesiąca ;) ale jestem inż więc z sieciami nie będę miał chyba zbyt dużego problemu aby się tego próbować uczyć.

4
a = lambda: Gallery(self.root).get_test1()

Ale czemu tam jest lambda a nie zwykłe wywołanie? czyli:

a = Gallery(self.root).get_test1()

wygląda jakbyś walił na ślepo, tak zwane programowanie przez permutacje

0
KamilAdam napisał(a):
a = lambda: Gallery(self.root).get_test1()

Ale czemu tam jest lambda a nie zwykłe wywołanie? czyli:

a = Gallery(self.root).get_test1()

wygląda jakbyś walił na ślepo, tak zwane programowanie przez permutacje

Ponieważ kod dotyczy tkinter, jak wywołuje normalnie to mi się wyświetla widget którego nie chce, za pomocą lambdy mam wszytko ok za wyjątkiem tego że zamiast wartości wyświetla mi się obiekt.

0
Mr Coin napisał(a):

Tak, będę analizował obrazy - sieci neuronowe. Zmieniłem zawód i pracuję jako programista od miesiąca ;) ale jestem inż więc z sieciami nie będę miał chyba zbyt dużego problemu aby się tego próbować uczyć.

Może przedstaw jakie byty musisz użyć, np:

  • Obraz: Image
  • Galeria: lista obrazów, pozwala dodawać/usuwać obrazy, potrafi wylosować próbkę testową.
  • Schemat: Schemat sieci neuronowej z parametrami.
  • Algorytm: tworzony na podstawie Schema

itd itp..

0
_13th_Dragon napisał(a):
Mr Coin napisał(a):

Tak, będę analizował obrazy - sieci neuronowe. Zmieniłem zawód i pracuję jako programista od miesiąca ;) ale jestem inż więc z sieciami nie będę miał chyba zbyt dużego problemu aby się tego próbować uczyć.

Może przedstaw jakie byty musisz użyć, np:

  • Obraz: Image
  • Galeria: lista obrazów, pozwala dodawać/usuwać obrazy, potrafi wylosować próbkę testową.
  • Schemat: Schemat sieci neuronowej z parametrami.
  • Algorytm: tworzony na podstawie Schema

itd itp..

Znalazłem rozwiązanie, jakby ktoś potrzebował to trzeba użyć self.root.withdraw(), bez lambda

1 użytkowników online, w tym zalogowanych: 0, gości: 1