class foo:
def __init__(self, value: list[int]):
assert isinstance(value, list) and all(isinstance(i, int) for i in value)
self.value = value
>>> foo([1,2,3]) # good
<__main__.foo object at 0x000001EB492A5940>
>>> foo('abc') # bad
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
foo('abc')
File "<pyshell#1>", line 3, in __init__
assert isinstance(value, list) and all(isinstance(i, int) for i in value)
AssertionError
>>> foo([1.0, 2.0, 3.0]) # bad
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
foo([1.0, 2.0, 3.0])
File "<pyshell#1>", line 3, in __init__
assert isinstance(value, list) and all(isinstance(i, int) for i in value)
AssertionError
class foo:
def __init__(self, value):
if not isinstance(value, list) or not all(isinstance(x, int) for x in value):
raise TypeError("value should be a list of integers")
self.value = value
除了类型检查(仅由linter强制执行)之外,您还可以
assert
除了一个简单的断言之外,您还可以
raise
或者为调用方实现一个自定义异常来处理这些异常一种方法是直接检查实例类型,如果它们不在您想要的类型中,则引发错误
相关问题 更多 >
编程相关推荐