何时以及为什么我可以将描述符类的实例分配给Python中的类属性而不是使用属性?

时间:2011-04-30 15:03:09

标签: python descriptor

我知道属性一个描述符,但是有没有特定的例子说明使用描述符类可能更有利,pythonic,或者提供一些优于使用{{1在方法函数上?

3 个答案:

答案 0 :(得分:8)

更好的封装和可重用性:描述符类可以在实例化时设置自定义属性。有时以这种方式保持数据受限是有用的,而不必担心它会在描述符的所有者上被设置或覆盖。

答案 1 :(得分:3)

让我引用EuroPython 2012精彩视频"Discovering Descriptors"

如何在描述符和属性之间进行选择:

  • 当他们了解班级
  • 时,属性最有效
  • 描述符更通用,可以经常适用于任何类
  • 如果类和实例的行为不同,则使用描述符
  • 属性是语法糖

另外,请注意,您可以将__slots__与描述符一起使用。

答案 2 :(得分:0)

@property不允许您同时定义专用的setter和getter方法。 如果一个getter方法足够好"然后使用@property,否则你需要property()。