擅长:python、mysql、java
<p>好的Python设计避免了显式类型检查:“如果它像鸭子一样呱呱叫,那就是鸭子……”。因此,您应该首先尝试在类之外执行数据验证,或者根本不执行。你知道吗</p>
<p>说到这里,执行检查的一种方法是重新定义<code>__setattr__</code><a href="https://stackoverflow.com/a/7042247/9209546">as described here</a>:</p>
<pre><code>class Point():
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __setattr__(self, name, value):
assert isinstance(value, str), "Value must be of type str"
super().__setattr__(name, value)
p = Point('a', 'b', 'c')
p.x = 3
# AssertionError: Value must be of type str
</code></pre>