Ich versuche, Validierung für ein Klassenattribut zu haben, so dass es nur bestimmte Werte oder spezifische type
Werte annehmen kann. Ich habe mit dem folgenden Ansatz kommtWie rekursiv Datentypen von zwei Objekten in Python vergleichen?
class someClass:
value_types = [float, [int], "A", "B"]
def __init__(self, value):
for value_type in self.value_types:
if not self.match_type(value_type, value):
raise ValueError("The value type is invalid")
self.value = value
@staticmethod
def match_type(obj1, obj2):
"""
For obj1 and obj2 recursively compares all the types of containers and
elements inside containers, return False in case of mismatch.
"""
pass
Ich versuche, einen Weg zu finden, der eine generische match_type
Funktion implementiert, das für jede Art von value_type
Klasse Attribute funktionieren würde. Meine Hauptmotivation dahinter ist, die Domäne des Instanzattributs value
einzuschränken und die Werte zu validieren, die basierend auf dem Klassenattribut value_type
übergeben wurden.
Gerade für mehr Klarheit, die in dem obigen someClass
Konstruktor erlaubten Werte
- 7,5
- [1, 9, 8, 6]
- "A"
- "B" wären,
Werte, für die Fehler ausgelöst werden sollten, sind
- [1.2, 2.3]
- "C"
- []
Es spielt keine Rolle für den Zweck Ihrer Frage, aber Sie haben eine Reihe von Fehlern in Ihrer '__init__' Funktion. –
Danke, dass du mich informiert hast, die Bugs behoben. – Satwik