用类的内置方法实现类型检查
Posted poincare
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用类的内置方法实现类型检查相关的知识,希望对你有一定的参考价值。
1.利用重写__setattr__来实现。
import logging logger = logging.getLogger(‘logger‘) streamhandler = logging.StreamHandler() logger.setLevel(logging.DEBUG) streamhandler.setLevel(logging.DEBUG) streamhandler.setFormatter(logging.Formatter( ‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)) logger.addHandler(streamhandler) def typeassist(**kwargs): def new_cls(cls): def redefine(self, key, value): if not isinstance(value, kwargs[key]): logger.log(level=logging.ERROR, msg=‘TypeError‘) self.__dict__[key] = None else: self.__dict__[key] = value setattr(cls, ‘__setattr__‘, redefine) return cls return new_cls @typeassist(name=str, age=int, result=float) class Student: def __init__(self, name, age, result): self.name = name self.age = age self.result = result def __str__(self): return str(self.__dict__) m = Student(‘sasd‘, 56, 45.0) p = Student(‘SSS‘, 12, 4) print(p) print(m)
2.利用描述符来实现。
以上是关于用类的内置方法实现类型检查的主要内容,如果未能解决你的问题,请参考以下文章
(JAVA)啥是实例化如何实现类的实例化(用类或方法创建一个该类的实例)?
java可以实现两个数的加·减·乘·除·运算!!!用类的方法做