Seite 1 von 1

AttributeError: can't set attribute Fehlermeldung

Verfasst: Donnerstag 19. Februar 2009, 21:39
von botchico
Hallo,

bin Neuling in Sachen Python und Klassen.

Habe folgendes ausprobiert

Code: Alles auswählen

from numpy import arctan2, diff, unique
import cosine
import wx
import os
import mx

class test(object):
    def __init__(self ):
        self.sin = [9,11]
        self.cos = [10,2]
        self.pos = [2,3]
        self.method = 0
        self.phase = COSINEPhase(self.sin, self.cos, self.pos, self.method)

class COSINEPhase(object):
    def __init__(self, sine, cosine, pos, method):
        print"Konstruktor der Klasse COSINEPhase"
        self.sine = sine
        self.cosine = cosine
        self.Position = pos
        self.__PhaseValue = []
        self.EndOfMeasurement = max(pos)
        self.GenerateArcTan( method)
        #self.PartionPhase()
        #self.CalcIdealAndCorrValues()

    def GenerateArcTan(self, method = 0):
        print "Methode zum Erzeugen der Phasenwerte"
        if(method == 0):
            print "Library methode wird verwendet"
            self.PhaseValue = arctan2(self.sine, self.cosine)
        elif(method == 1):
            print "Methode noch nicht implementiert"
        elif(method == 2):
            print "Methode noch nicht implementiert"
        else:
            print "Library methode wird verwendet"
            self.PhaseValue = arctan2(self.sine, self.cosine)
        self.StartInZeroOffset = self.PhaseValue[0]
    
    def getPhaseValue(self):
        return self.PhaseValue
    
    PhaseValue      = property(getPhaseValue)
    


x = test()
und nun bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "D:\Daten\Eclipse\CosineAlgoAnalyzer\src\test.py", line 48, in <module>
    x = test()
  File "D:\Daten\Eclipse\CosineAlgoAnalyzer\src\test.py", line 13, in __init__
    self.phase = COSINEPhase(self.sin, self.cos, self.pos, self.method)
  File "D:\Daten\Eclipse\CosineAlgoAnalyzer\src\test.py", line 23, in __init__
    self.GenerateArcTan( method)
  File "D:\Daten\Eclipse\CosineAlgoAnalyzer\src\test.py", line 31, in GenerateArcTan
    self.PhaseValue = arctan2(self.sine, self.cosine)
AttributeError: can't set attribute
Kann mir jemand helfen? Stehe total auf dem Schlauch

Verfasst: Donnerstag 19. Februar 2009, 22:01
von Rebecca
Naja, du gibst der Property nur einen getter, keinen setter.

Verfasst: Donnerstag 19. Februar 2009, 22:13
von bords0
Ungetestet (geänderte Zeilen mit # markiert):

Code: Alles auswählen

from numpy import arctan2, diff, unique
import cosine
import wx
import os
import mx

class test(object):
    def __init__(self ):
        self.sin = [9,11]
        self.cos = [10,2]
        self.pos = [2,3]
        self.method = 0
        self.phase = COSINEPhase(self.sin, self.cos, self.pos, self.method)

class COSINEPhase(object):
    def __init__(self, sine, cosine, pos, method):
        print"Konstruktor der Klasse COSINEPhase"
        self.sine = sine
        self.cosine = cosine
        self.Position = pos
        self._PhaseValue = [] #
        self.EndOfMeasurement = max(pos)
        self.GenerateArcTan( method)
        #self.PartionPhase()
        #self.CalcIdealAndCorrValues()

    def GenerateArcTan(self, method = 0):
        print "Methode zum Erzeugen der Phasenwerte"
        if(method == 0):
            print "Library methode wird verwendet"
            self._PhaseValue = arctan2(self.sine, self.cosine) #
        elif(method == 1):
            print "Methode noch nicht implementiert"
        elif(method == 2):
            print "Methode noch nicht implementiert"
        else:
            print "Library methode wird verwendet"
            self._PhaseValue = arctan2(self.sine, self.cosine) #
        self.StartInZeroOffset = self.PhaseValue[0]
   
    def getPhaseValue(self):
        return self._PhaseValue #
   
    PhaseValue      = property(getPhaseValue)
   


x = test()
Vermutlich willst du nur einen Unterstrich vor PhaseValue. Und schau mal PEP8 an.

Verfasst: Donnerstag 19. Februar 2009, 22:35
von botchico
danke euch...
das problem ist gelöst...
hab das mit den propertys noch nicht so ganz geblickt...aber es liegt an den settern..

Verfasst: Freitag 20. Februar 2009, 00:08
von Leonidas
In den gegebenen Beispielen braucht man eigentlich auch keine Properties.