Import metody do innej klasy

0

Witam,
czy może mi ktoś z Was pomóc z problemem, utknąłem i nie wiem co z tym zrobić
w kasie A mam taki do module -> nameA.py

nameA.py

class One:
...
    def get_open_test(self):
        self.read = f'Size of photo{self.get_open_file()}'
        print('Size of photo', self.read)

powyższy fragment kodu pobiera z innej metody klasy One py self.get_open_file() link do zdjęcia we wskazanym katalogu. Ponieważ będę obrabiał zdjęcia to model matematyczny buduję w oddzielnym pliku stąd takie działania. W drugim pliku mam taki kod (na razie testowy):

nameB.py

class Two:
...
    def get_calc(self):
        # from GUI.module.gallery import Gallery
        # a = lambda: Gallery().get_open_test()
        
        # print('lambda', type(a))
        
        im = Image.open('/home/GUI/reslut/0.png')
        w, h = im.size

        describe = f'Found with a probability of {87}%\n' \
                   f'Describe:...'

        return w, h, describe

potrzebuję pod im = Image.open() zamiast sztywnego linku podstawić dynamicznie z klasy A. czyli potrzebuję mieć im = Image.open(a), jak używam a = lambda: Gallery().get_open_test() to otrzymuję lambda <class 'function'> zamiast /home/.., zaś przy takim wywołaniu a = Gallery().get_open_test() otrzymuję AttributeError: 'NoneType' object has no attribute 'resizable'

Czy może ktoś mi pomóc zaimportować link jako str. Dziękuję bardzo za pomoc:D

51
from GUI.module.gallery import Gallery

class Two:
    def __init__(self):
    self.gallery = Gallery()
    
    def get_calc(self):
        _image = self.gallery.get_open_test()
        
        im = Image.open(_image)
        w, h = im.size

        describe = f'Found with a probability of {87}%\n' \
                   f'Describe:...'

        return w, h, describe
0
ledi12 napisał(a):
from GUI.module.gallery import Gallery

class Two:
    def __init__(self):
    self.gallery = Gallery()
    
    def get_calc(self):
        _image = self.gallery.get_open_test()
        
        im = Image.open(_image)
        w, h = im.size

        describe = f'Found with a probability of {87}%\n' \
                   f'Describe:...'

        return w, h, describe

Dziękuje bardzo za pomoc :D

47
Mr Coin napisał(a):
ledi12 napisał(a):
from GUI.module.gallery import Gallery

class Two:
    def __init__(self):
    self.gallery = Gallery()
    
    def get_calc(self):
        _image = self.gallery.get_open_test()
        
        im = Image.open(_image)
        w, h = im.size

        describe = f'Found with a probability of {87}%\n' \
                   f'Describe:...'

        return w, h, describe

Dziękuje bardzo za pomoc :D, import zostawiłem wew klasy (wbrew zasadom) ponieważ mam błąd cyrkulacji (ImportError: cannot import name 'Gallery' from partially initialized module 'GUI.module.gallery' (most likely due to a circular import)) jak wrzucę przed klasę. Wynika to z tego że oba pliki są ze sobą sprzęgnięte, to mam jeszcze pytanie jedno czy mogę import w tym przypadku wrzucić w def init?

Na Twoim miejscu skupiłbym się raczej na ogarnięciu normalnych importów czyt. przemyśleć "architekturę". Jakieś zanestowane importy w metodach / initach to kiepski pomysł i proszenie się o kłopoty w przyszłości :P

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

class Two:
    def __init__(self):
    self.gallery = Gallery()
    
    def get_calc(self):
        _image = self.gallery.get_open_test()
        
        im = Image.open(_image)
        w, h = im.size

        describe = f'Found with a probability of {87}%\n' \
                   f'Describe:...'

        return w, h, describe

Dziękuje bardzo za pomoc :D, import zostawiłem wew klasy (wbrew zasadom) ponieważ mam błąd cyrkulacji (ImportError: cannot import name 'Gallery' from partially initialized module 'GUI.module.gallery' (most likely due to a circular import)) jak wrzucę przed klasę. Wynika to z tego że oba pliki są ze sobą sprzęgnięte, to mam jeszcze pytanie jedno czy mogę import w tym przypadku wrzucić w def init?

Na Twoim miejscu skupiłbym się raczej na ogarnięciu normalnych importów czyt. przemyśleć "architekturę". Jakieś zanestowane importy w metodach / initach to kiepski pomysł i proszenie się o kłopoty w przyszłości :P

Ogólnie tak, ale robię apkę w Tkinter i w jednym module mam GUI z galerią zaś "backend" robię oddzielnie stąd tak to wygląda.

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