在 Python 中定义属性的首选方式:属性装饰器还是 lambda?
在 Python 中定义类属性的首选方法是什么?为什么?在一堂课中同时使用两者可以吗?
@property
def total(self):
return self.field_1 + self.field_2
或者
total = property(lambda self: self.field_1 + self.field_2)
Which is the preferred way of defining class properties in Python and why? Is it Ok to use both in one class?
@property
def total(self):
return self.field_1 + self.field_2
or
total = property(lambda self: self.field_1 + self.field_2)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于只读属性,我使用装饰器,否则我通常会执行以下操作:
更新:
最近版本的 python 增强了装饰器方法:
For read-only properties I use the decorator, else I usually do something like this:
update:
Recent versions of python enhanced the decorator approach:
在您所展示的情况下,装饰器形式可能是最好的,您希望将方法转换为只读属性。当您想要提供 setter/deleter/docstring 以及 getter 时,或者如果您想要添加一个与其派生其值的方法具有不同名称的属性时,第二种情况会更好。
The decorator form is probably best in the case you've shown, where you want to turn the method into a read-only property. The second case is better when you want to provide a setter/deleter/docstring as well as the getter or if you want to add a property that has a different name to the method it derives its value from.
不要为此使用 lambda。第一个对于只读属性是可接受的,第二个与真实方法一起用于更复杂的情况。
Don't use lambdas for this. The first is acceptable for a read-only property, the second is used with real methods for more complex cases.