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

mke*_*y33 15 python descriptor

我知道属性一个描述符,但是有没有特定的例子,当使用描述符类可能比使用@property方法函数更有利,pythonic或提供一些好处?

XOR*_*ist 8

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


gah*_*cep 5

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

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

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

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