Wie werden in Cyton konstante Klassenvariablen initialisiert ?

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

Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Beitragvon pyHoax » 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
  1. cdef class prim_modulo:
  2.     cdef public const long teiler
  3.     cdef long vielfache
  4.  
  5.     def __cinit__(self, const long teiler):
  6.         self.teiler = teiler
  7.         self.vielfache = teiler + teiler
  8.  
  9.     def mod(self, const long zahl):
  10.         cdef long dif
  11.         while True:
  12.             dif = zahl - self.vielfache
  13.             if  dif > 0:
  14.                 self.vielfache = self.vielfache + self.teiler
  15.             else:
  16.                 return dif == 0


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

Re: Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Beitragvon 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

Re: Wie werden in Cyton konstante Klassenvariablen initialisiert ?

Beitragvon pyHoax » Dienstag 20. Dezember 2016, 19:03

Klassenattribut

Erwischt.
Bist ja wirklich unfehlbarer als der Papst.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder