我正在尝试对类属性进行验证,以便它只能接受特定值或特定type
值。我想出了以下方法
class someClass:
value_types = [float, [int], "A", "B"]
def __init__(self, value):
for value_type in self.value_types:
if not self.match_type(value_type, value):
raise ValueError("The value type is invalid")
self.value = value
@staticmethod
def match_type(obj1, obj2):
"""
For obj1 and obj2 recursively compares all the types of containers and
elements inside containers, return False in case of mismatch.
"""
pass
我正在尝试找到一种实现通用match_type
函数的方法,该函数适用于任何类型的value_type
类属性。我的主要动机是限制实例属性value
的域,并验证基于value_type
类属性传递的值。
为了更加清晰,上面someClass
构造函数中允许的值为
应该引发错误的值是
答案 0 :(得分:0)
你可以通过
来检查类型x = 5
type(x) is int
# True
但是,由于您有类型和字符串的奇怪组合,您可能需要更复杂的检查
x = [6, 3]
type(x) is list and type(x[0]) is int
# True
x = 'A'
x == 'A' or x == 'B'
# True
你想要完成什么?这本质上是凌乱的