Seite 1 von 1

Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Verfasst: Dienstag 20. Dezember 2016, 15:04
von pyHoax
Schönen Dienstag !

Weis einer von Euch wie ich in Cython ein als 'const' deklariertes Klassenattribut mit einem Parameter der __init__ / __cinit__ Methode initialisieren kann ?

Im folgenden Code
[codebox=python file=PrimModulo.pyx]
cdef class prim_modulo:
cdef public const long teiler
cdef long vielfache

def __cinit__(self, const long teiler):
self.teiler = teiler
self.vielfache = teiler + teiler

def mod(self, const long zahl):
cdef long dif
while True:
dif = zahl - self.vielfache
if dif > 0:
self.vielfache = self.vielfache + self.teiler
else:
return dif == 0
[/code]

wird bemängelt:
PrimModulo.pyx:10:12: Assignment to const attribute 'teiler'
Ich kann mich entfernt erinnern das die __init__ Methode kein echter Konstruktor ist.
Wie bekomme ich den Member Konstant und initialisiert ?

Re: Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Verfasst: Dienstag 20. Dezember 2016, 18:32
von BlackJack
@pyHoax: Das scheint nicht vorgesehen zu sein. Ist übrigens kein Klassenattribut sondern ein Instanzattribut.

Re: Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Verfasst: Dienstag 20. Dezember 2016, 19:03
von pyHoax
Klassenattribut
Erwischt.
Bist ja wirklich unfehlbarer als der Papst.