17

我知道一个属性一个描述符,但是有没有具体的例子说明什么时候使用描述符类可能更有利,pythonic,或者比@property在方法函数上使用提供一些好处?

4

3 回答 3

9

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

于 2011-04-30T15:29:37.363 回答
4

让我引用 EuroPython 2012 的精彩视频“发现描述符”

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

  • 属性在了解类时效果最佳
  • 描述符更通用,通常可以应用于任何类
  • 如果类和实例的行为不同,则使用描述符
  • 属性是语法糖

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

于 2013-03-17T20:48:37.380 回答
-1

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

于 2011-04-30T15:21:26.250 回答