如何在python中强制属性为int?

时间:2018-11-08 12:44:01

标签: python oop

我有以下课程:

class C3DPoint(object):
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

    # Other methods

我想确定,如果有人设置v3dpoint.x = <sth>,则在vale不是字符串的情况下会抛出错误。

这怎么办?

4 个答案:

答案 0 :(得分:4)

良好的Python设计避免了显式的类型检查:“如果像鸭子一样嘎嘎叫,那就是鸭子...”。因此,您应该首先尝试在课堂外或根本不进行数据验证。

话虽如此,执行检查的一种方法是重新定义bool as described here

IsOpen

答案 1 :(得分:1)

您可以在Python中键入函数参数,前提是您使用的是当前版本,当前不确定是哪个PEP实现了它。

def __init__(x: int, y: int , z: int):

但是,这不会引发TypeErrors,因为我们都同意成年人,因此您可以进行类型检查。

if not (isinstance x, int):
    # throw Error

答案 2 :(得分:0)

您可以这样做:

variable_name: type = value

答案 3 :(得分:0)

使用try / except:

try:
    int(a)
except Exception as e:
    print "That's not an int"