python - 在 python 中验证数据的最佳方法是什么?
问题描述
我是 Python 的新手,我正在努力寻找验证数据的最佳方法。
我有一个“well”类型的对象,它具有其他对象的属性。数据可以来自 XML 文件或通过代码。一个例子可以在下面看到。
class Well:
def __init__ (self, name, group):
self.__name = name # Required
self.__group = group # Required
self.__operate_list = [] # Optional
self.__monitor_list = [] # Optional
self.__geometry = None # Optional
self.__perf = None # Optional
...
class Operate:
# *OPERATE (*MAX|*MIN) type value (action)
# *OPERATE (*PENALTY) type (mode) value (action)
# *OPERATE (*WCUTBACK) type mode v1 (v2 (v3)) (action)
def __init__ (self, att:str, type_:str, value: [], mode=None, action=None):
self.__att = att
self.__type_ = type_
self.__mode = mode
self.__value_list = value
self.__action = action
例如,要验证“操作”,我需要检查每个属性的许多限制和有效值。例如,我有一个有效的“type_”字符串列表,我应该断言 type_ 在这个列表中。
1)最好的方法是在构造函数中?我应该创建一种方法来进行此验证吗?或者我应该创建一个仅用于验证数据的新类吗?
2) 我应该在哪里创建这些有效值列表?在构造函数中?作为全局变量?
解决方案
您可以通过使用以下property
函数来使用 getter 和 setter 方法:
class Operate:
def __init__(self, type):
self.type = type
@property
def type(self):
return self._type
@type.setter
def type(self, value):
assert value in ('abc', 'xyz')
self._type = value
以便:
o = Operate(type='123')
会导致:
Traceback (most recent call last):
File "test.py", line 18, in <module>
o = Operate(type='123')
File "test.py", line 8, in __init__
self.type = type
File "test.py", line 15, in type
assert value in ('abc', 'xyz')
AssertionError
推荐阅读
- c - Doxygen:文档中的函数名称错误 (C)
- python - 使用两个不同大小的 pandas 数据框进行 Wilcoxon 测试
- tensorflow - Google Collab 与 TensorBoard 不兼容
- pip - 如何在命令 pip install Cython 期间修复错误
- substrate - 如何在基板中生成 types.json
- flutter - 对于 pageView 中的视频列表,VideoPlayer 中的视频初始化时间过长
- python - 来自 pubsub 的 Apache Beam 读取模式
- json - JOLT 仅从数组中的数组中获取一个值
- android - 如何使用 Kotlin 在 Android 中以编程方式更改选择器文件检查状态可绘制 .webp 文件颜色?
- php - 如何在启动时启动 PHP?