2024-04-18 20:47:52 发布
网友
在Python中定义类属性的首选方法是什么?为什么?在一个班里两种都用可以吗?
@property def total(self): return self.field_1 + self.field_2
或者
total = property(lambda self: self.field_1 + self.field_2)
不要用羊肉做这个。第一种方法对于只读属性是可以接受的,第二种方法用于更复杂的情况。
decorator表单在您所展示的情况下可能是最好的,在这种情况下,您希望将方法转换为只读属性。如果希望提供setter/deleter/docstring和getter,或者希望将具有不同名称的属性添加到从其派生值的方法中,则第二种情况更好。
对于只读属性,我使用decorator,否则通常会执行以下操作:
class Bla(object): def sneaky(): def fget(self): return self._sneaky def fset(self, value): self._sneaky = value return locals() sneaky = property(**sneaky())
更新:
最新版本的python增强了decorator方法:
class Bla(object): @property def elegant(self): return self._elegant @elegant.setter def elegant(self, value): self._elegant = value
不要用羊肉做这个。第一种方法对于只读属性是可以接受的,第二种方法用于更复杂的情况。
decorator表单在您所展示的情况下可能是最好的,在这种情况下,您希望将方法转换为只读属性。如果希望提供setter/deleter/docstring和getter,或者希望将具有不同名称的属性添加到从其派生值的方法中,则第二种情况更好。
对于只读属性,我使用decorator,否则通常会执行以下操作:
更新:
最新版本的python增强了decorator方法:
相关问题 更多 >
编程相关推荐