classe de cas en python

Il existe une classe de cas dans Scala. C'est celui qui crée un objet immuable avec l'argument que vous mettez lors de la création et son nom.

Parce que c'est pratique, je voulais faire quelque chose comme une classe de cas même avec python, alors je l'ai essayé

def caseclass(args):

    class _Case(object):
        def __init__(self, kwargs):
            self._initwargs = kwargs


        def _type_check(self, key, value):
            if isinstance(value, self._initwargs[key]) is False:
                raise TypeError;

        def init(self, **kwargs):
            [self._type_check(key, kwargs[key])  for key in kwargs]
            self._kwargs = kwargs

        def getattr(self, name):
            return self._kwargs[name]

        def setattr(self, name, value):
            raise TypeError;



    def case(klass):
        _case = _Case(args)
        krass = type(klass.__name__, klass.__bases__,
                     {
                "__getattr__":_case.getattr,
                "__setattr__":_case.setattr,
                "__init__":_case.init
                })

        return krass

    return case

Alors, comment utiliser la classe de cas en tant que décorateur

#{argument:argumentの型}という形式の辞書インスタンスをargumentにします
@caseclass({'foo':str, 'bar':int})
class Hoge(object):pass

hoge = Hoge(foo = "hello", bar = 1)
print(hoge.foo) # "hello"Et sortie
print(hoge.bar) #1 et sortie
hoge.num = 1 #TypeError saute lors de la tentative de définition

fuga = Hoge(dosukoi = "nokotta") #Et même si vous spécifiez un argument non défini, Error volera

Peut-être qu'il y a une meilleure façon

Recommended Posts

classe de cas en python
Notation de classe en Python
Les mines terrestres cachées dans les variables de classe Python
Lire des morceaux PNG en Python (édition de classe)
Examiner la classe d'un objet avec python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
[Python] classe, instance
SendKeys en Python
"Kanrika" la classe python
Méta-analyse en Python
Unittest en Python
À propos de python, classe
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
classe python, instance
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
Les bases de #Python (classe)
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Générer une collection de première classe en Python
[Introduction à Python] Comment utiliser la classe en Python?
Implémenter __eq__ etc. de manière générique dans la classe Python
Classe Trump en Python (avec comparaison)
Comment utiliser __slots__ dans la classe Python
Générer une classe à partir d'une chaîne en Python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python