In python which method has to be overridden to validate the class variables
本问题已经有最佳答案,请猛点这里访问。
假设我有以下"演示"类:
1 2 | class demo(object): class_variable = None |
现在,每当有人设置"class_variable"时,我需要验证该值(例如,class_variable只能具有"str"类型的值)。
1 2 | demo.class_variable = 15 # here int value is assigned, i want to raise exception for such cases |
这可以通过覆盖setattr(self,f,v)方法对实例变量进行。
如何处理类变量?
通过在类
创建一个元类,该元类在其
1 2 3 4 5 6 | class DemoMeta(type): def __setattr__(self, name, value): if isinstance(value, str): return super(DemoMeta, self).__setattr__(name, value) else: raise ValueError("Only str values allowed") |
定义使用此元类的类:
1 2 3 | class demo(object): __metaclass__ = DemoMeta class_variable = None |
现在,当您试图给
1 | demo.class_variable = 12 |
加薪:
1 | ValueError: Only str values allowed |