创建python类时进行强属性类型检查

时间:2019-01-26 09:46:40

标签: python python-3.x

我来自Java背景,并且习惯于POJO定义数据模型。基本上,我想定义的是一个使用Python类的数据模型,该类具有强大的属性类型检查功能,并且无法添加比定义的属性更多的属性(基本上类似于django模型)。例如,我正在尝试创建一个类:

class A:
    element1: int
    element2: str

但是以这种方式,我并没有强迫一个对象将没有属性element3。

实现该目标的pythonic方法是什么,您对python 3.6+有什么建议?

1 个答案:

答案 0 :(得分:0)

您可以使用(x === 0 && x == 0) || x === 1 && x == 1)进行此操作,也可以使用Slots docs这里的魔术方法__slots__查找更多信息。

  

插槽是解决此空间消耗问题的好方法。插槽不是提供允许动态地向对象添加属性的动态命令,而是提供了静态结构,该结构禁止在创建实例后添加对象。

请记住,这是有代价的。

  

它将破坏序列化(例如,泡菜)。它还将破坏多重继承。一个类不能从一个以上的类中继承,该类定义了插槽或具有用C代码定义的实例布局(如list,tuple或int)。

我希望这些信息足够。