我有一个快速的问题,我有点难以理解何时使用属性和何时使用普通的属性。对我来说,这个区别有点模糊。如果有关于这个主题的任何资源,那就太好了,谢谢!
我有一个快速的问题,我有点难以理解何时使用属性和何时使用普通的属性。对我来说,这个区别有点模糊。如果有关于这个主题的任何资源,那就太好了,谢谢!
属性比属性更加灵活,因为您可以定义函数来描述在设置、获取或删除它们时应该发生什么。如果不需要这种额外的灵活性,请使用属性-它们更容易声明并且速度更快。
在像Java这样的语言中,通常建议始终编写getter和setter,以便将来可以用更复杂的版本替换这些函数。在Python中没有必要这样做,因为客户端代码访问属性和属性的语法是相同的,因此您可以随时选择在不破坏向后兼容性的情况下 later on, 使用属性。
重点是语法是可以互换的。始终从属性开始。如果发现在访问属性时需要进行额外的计算,则将其替换为属性。
属性是属性和后期封装。
当您将属性转换为属性时,只需定义一些getter和setter即可“附加”到它上面,这将挂钩数据访问。然后,您无需重写其余代码,访问数据的方式相同,无论您的属性是属性还是不是。
由于这种非常聪明和强大的封装机制,在Python中,您通常可以使用属性(没有先验封装,因此没有任何getter或setter),除非在访问数据时需要执行特殊操作。
如果是这样,那么您只需要定义设置器和获取器(如果需要),并将它们“附加”到属性上,将其转换为属性,而不会对代码的其他部分产生任何影响(而在Java中,通常在创建字段时,通常是私有的,第一件事就是创建与之关联的getter和setter方法)。关于属性、属性和描述符的好页面在这里。
除了Daniel Roseman所说的内容,当我需要包装某些东西时,我经常使用属性。也就是说,当我不存储信息而是由包装对象来存储时,属性可以成为极好的访问器。