Wie erstelle ich ein unveränderliches Objekt in Python?Python

Python-Programme
Anonymous
 Wie erstelle ich ein unveränderliches Objekt in Python?

Post by Anonymous »

Obwohl ich das nie gebraucht habe, fiel mir einfach auf, dass es etwas schwierig sein könnte, ein unveränderliches Objekt in Python zu erstellen. Sie können __setattr__ nicht einfach überschreiben, da Sie dann nicht einmal Attribute in __init__ festlegen können. Ein Tupel in Unterklassen zu unterteilen ist ein Trick, der funktioniert:

Code: Select all

class Immutable(tuple):

def __new__(cls, a, b):
return tuple.__new__(cls, (a, b))

@property
def a(self):
return self[0]

@property
def b(self):
return self[1]

def __str__(self):
return "".format(self.a, self.b)

def __setattr__(self, *ignored):
raise NotImplementedError

def __delattr__(self, *ignored):
raise NotImplementedError
Aber dann haben Sie über self[0] und self[1] Zugriff auf die Variablen a und b, was ärgerlich ist.
Ist das in reinem Python möglich? Wenn nicht, wie würde ich es mit einer C-Erweiterung machen? Antworten, die nur in Python 3 funktionieren, sind akzeptabel.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post