繁体   English   中英

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

[英]When and why might I assign an instance of a descriptor class to a class attribute in Python rather than use a property?

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM