Forum >> Principianti >> Le classi queste sconosciute

Pagina: 1

Buonasera, per quanto io ci stia provando ... finisco sempre per litigare quando cerco di usare le classi; porto un esempio di errore che non capisco.
L'errore che mi visualizza l'interprete è:




return self.func(*args)


self.file_modificati.append(self.record_new) # line 118, in converti_data_promo

^^^^^^^^^^^^^^^^^^^^

File "C:\Users\AlbertoAppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 2425, in __getattr__

return getattr(self.tk, attr)

^^^^^^^^^^^^^^^^^^^^^^

AttributeError: '_tkinter.tkapp' object has no attribute 'file_modificati'




Mi potete chiarire le idee ?

Grazie

class Conversione_date:
    def __init__(self):
    
        self.file_modificati = []
        self.file_modificati_giornalieri = []
        
    def converti_data_promo(self):
        # qui ci sono scariate riche di codice che non utilizzano le variabili "inquisite"
        if self.file_cambio_data.startswith("promo"):
            self.file_modificati_giornalieri.append(self.record_new)
        else:
118         self.file_modificati.append(self.record_new)


------
Alberto
Ciao @Trescon ... finalmente un post che non sia di spammer o bot ...




Il Tuo problema deriva certamente da come implementi ed utilizzi le Tue classi, impossibile dare risposte utili dato che non hai fornito praticamente nulla di valido in merito alle Tue implementazioni.

Comunque, penso che il capitolo 9 del manuale Ti possa essere utile, approfondisci particolarmente i capitoli 9.2 e 9.3.1-9.3.5 e fai prove sino ad assimilare la materia.




Il traceback che hai postato indica chiaramente che hai cercato di utilizzare proprietà di oggetti di classe "Conversione_date" come se tali proprietà facessero parte di widget tkinter ... le cose non funzionano così, a meno Tu non abbia creato dei sub-classamenti con classi-madre multiple, tra cui "Conversione_date", cosa che non credo.

Le proprietà di un oggetto istanziato restano di proprietà dell'oggetto stesso, non di quello che lo istanzia, anche se l'oggetto è definito quale variabile di istanza del chiamente ... provo a farTi un esempio ridefinendo lo stralcio di classe da Te postato in modo che scinda una lista di stringhe sulla base del "promo" iniziale

Python 3.12.3 (main, Feb  4 2025, 14:48:35) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
class Conversione_date:
    def __init__(self):
    
        self.file_modificati = []
        self.file_modificati_giornalieri = []
        
    def converti_data_promo(self, data):
        # qui ci sono scariate riche di codice che non utilizzano
        # le variabili "inquisite"
        for d in data:
            if d.startswith("promo"):
                self.file_modificati_giornalieri.append(d)
            else:
                self.file_modificati.append(d)

                
values = ['Televisore', 'lavatrice', 'promo lavatrice', 'cellulare',
          'promo cellulare', 'lavastoviglie', 'piano corruta']
class A:
    def __init__(self):
        self.cvd = Conversione_date()
        self.cvd.converti_data_promo(values)
Istanziando un oggetto di classe "A" noi non potremo riferire direttamente alle liste contenute dalle istanze a Conversione_date

gest = A()
gest.file_modificati_giornalieri
Traceback (most recent call last):
  File "/usr/lib/python3.12/idlelib/run.py", line 580, in runcode
    exec(code, self.locals)
  File "<pyshell#15>", line 1, in <module>
AttributeError: 'A' object has no attribute 'file_modificati_giornalieri'
ma dovremo riferire alla istanza a Conversione_date memorizzata (self.cvd)

gest.cvd.file_modificati_giornalieri
['promo lavatrice', 'promo cellulare']
gest.cvd.file_modificati
['Televisore', 'lavatrice', 'cellulare', 'lavastoviglie', 'piano corruta']

Lo stralcio di traceback da Te proposto indica che sei ricaduto in questo tipo di problema.




Spero Ti sia utile, ciao
Fatti non foste a viver come bruti...


Pagina: 1



Esegui il login per scrivere una risposta.