Upgedatete Werte von dictionary werden nicht an Klasse übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dasilva_stefan
User
Beiträge: 3
Registriert: Donnerstag 28. Januar 2021, 10:04

In der __init__ Funktion erstelle ich ein dictionary. Anschliessend update ich die Values meines dictionarys. Das Problem dabei ist, dass die upgedateten Values nicht an meine Klasse übergeben werden.
Wenn ich in der Klasse die übergebenen Werte printe, dann sehe ich, dass es die default Werte sind, die ich bei der Erstellung angegeben habe.

Kann mir jemand diesbezüglich helfen?

Vielen Dank
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ohne Code leider nicht. Bitte dazu auch die Code Tags benutzen.
dasilva_stefan
User
Beiträge: 3
Registriert: Donnerstag 28. Januar 2021, 10:04

[class GUI(QMainWindow):
def __init__(self, app, thread):
super(GUI, self).__init__()

self.app = app
self.thread = thread
self.ui = Ui_GUI()
self.ui.setupUi(self)
self.setWindowTitle('Projekt AD Stefan da Silva')
self.setMinimumSize(QSize(800, 500))
self.centerPoint = QDesktopWidget().availableGeometry().center()
self.qtRectangle = self.frameGeometry()
self.qtRectangle.moveCenter(self.centerPoint)
self.move(self.qtRectangle.topLeft())

# Config
self.config = ConfigParser()

self.param_dict = {
'samples': 0,
'faktor': 0,
'offset': 0,
'perioden': 0,
'anteile': False
}

self.signale = SignalBase(self.param_dict['samples'],
self.param_dict['perioden'],
self.param_dict['offset'])

self.fourier = np.zeros(self.param_dict['samples'])
self.single_fourier = []

self.update_dictionary()]

[def update_dictionary(self):
self.param_dict['samples'] = int(self.ui.EnterSamples.text())
self.param_dict['faktor'] = int(self.ui.EnterFactor.text())
self.param_dict['offset'] = int(self.ui.EnterOffset.text())
self.param_dict['perioden'] = int(self.ui.EnterPeriods.text())
self.param_dict['anteile'] = bool(self.ui.ShowParts.checkState())

self.signale.samps = self.param_dict['samples']
self.signale.periods = self.param_dict['perioden']
self.signale.offset = self.param_dict['offset']

item = self.ui.SignalList.item
cnt = 0

for sinus in self.signale.sine_signals:
sinus.amp = float(item(cnt).widget.ui.EnterAmp.text())
sinus.freq = float(item(cnt).widget.ui.EnterFreq.text())
sinus.pha = float(item(cnt).widget.ui.EnterPhase.text())
cnt += 1
[class SignalBase:
def __init__(self, samples, periods, offset):
# print('init')
print('samples' + ' ' + str(samples))
self.sine_signals = [] # Signalvektor
self.samples = samples # Anzahl Samples
self.periods = periods # Anzahl Perioden
self.offset = offset # Offset
self.return_signal = np.zeros(self.samples) # Return
self.samp_points = np.arange(0, self.samples, 1) # Samplingpoints
self.time_vec = np.zeros(self.samples) # Zeitvektor
self.ground_freq = None # Grundfrequenz
self.time_period = None # Betrachtete Zeitspanne
self.dt_sp = None # Zeit zwischen zwei Samplingpoints]
__deets__ hat geschrieben: Donnerstag 28. Januar 2021, 11:36 Ohne Code leider nicht. Bitte dazu auch die Code Tags benutzen.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Da fehlen die Importe und wie Du die Klassen benutzt.
Woher merkst Du, dass sich das Wörterbuch nicht "geupdated" wird?

Wenn Du meinst, dass die Attribute in SignalBase sich nicht ändern: warum sollten sie auch, woher soll denn das Programm wissen, dass die Argumente ursprünglich mal in einem Wörterbuch standen?
dasilva_stefan
User
Beiträge: 3
Registriert: Donnerstag 28. Januar 2021, 10:04

Sirius3 hat geschrieben: Donnerstag 28. Januar 2021, 13:47 Da fehlen die Importe und wie Du die Klassen benutzt.
Woher merkst Du, dass sich das Wörterbuch nicht "geupdated" wird?

Wenn Du meinst, dass die Attribute in SignalBase sich nicht ändern: warum sollten sie auch, woher soll denn das Programm wissen, dass die Argumente ursprünglich mal in einem Wörterbuch standen?
Die Importe habe ich alle gemacht und ich kriege auch keine Fehlermeldungen. Ich habe bei der SignalBase Klasse einen print Befehl, der mir die Werte anzeigt.

Ebenfalls übergebe ich der Klasse die Values des Dictionarys
[self.signale = SignalBase(self.param_dict['samples'], self.param_dict['perioden'], self.param_dict['offset'])]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du argument aus dem Wörterbuch puhlst und explizit übergibst, dann werden Änderungen des Wörterbuch nicht weiter Einfluss haben. Da müsstest du das Wörterbuch selbst übergeben.
Antworten