Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

Dienstag 20. Dezember 2016, 15:04

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 ?
BlackJack

Dienstag 20. Dezember 2016, 18:32

@pyHoax: Das scheint nicht vorgesehen zu sein. Ist übrigens kein Klassenattribut sondern ein Instanzattribut.
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

Dienstag 20. Dezember 2016, 19:03

Klassenattribut
Erwischt.
Bist ja wirklich unfehlbarer als der Papst.
Antworten