栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

验证类实例属性的正确方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

验证类实例属性的正确方法

您可以使用Python属性将规则明确地分别应用于每个字段,并且即使客户端代码尝试更改该字段也可以强制执行这些规则:

class Spam(object):    def __init__(self, description, value):        self.description = description        self.value = value    @property    def description(self):        return self._description    @description.setter    def description(self, d):        if not d: raise Exception("description cannot be empty")        self._description = d    @property    def value(self):        return self._value    @value.setter    def value(self, v):        if not (v > 0): raise Exception("value must be greater than zero")        self._value = v

任何违反规则的尝试都将引发异常,即使是在

__init__
函数中,在这种情况下,对象构造也会失败。

更新: 从2010年到现在,我了解到

operator.attrgetter

import operatorclass Spam(object):    def __init__(self, description, value):        self.description = description        self.value = value    description = property(operator.attrgetter('_description'))    @description.setter    def description(self, d):        if not d: raise Exception("description cannot be empty")        self._description = d    value = property(operator.attrgetter('_value'))    @value.setter    def value(self, v):        if not (v > 0): raise Exception("value must be greater than zero")        self._value = v


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号