使用Python内置函数property()的首选方法是什么?作为装饰者还是保存到变量?
以下是将property()
保存到变量color
的示例。
class Train(object):
def __init__(self, color='black'):
self._color = color
def get_color(self):
return self._color
def set_color(self, color):
self._color = color
def del_color(self):
del self._color
color = property(get_color, set_color, del_color)
这是相同的例子,但改为使用装饰器。
class Train(object):
def __init__(self, color='black'):
self._color = color
@property
def color(self):
return self._color
@color.setter
def color(self, color):
self._color = color
@color.deleter
def color(self):
del self._color
我发现有些人喜欢将装饰器语法用于只读属性。例如。
class Train(object):
def __init__(self, color='black'):
self._color = color
@property
def color(self):
return self._color
但是保存到变量时也可以实现相同的功能。
class Train(object):
def __init__(self, color='black'):
self._color = color
def get_color(self):
return self._color
color = property(get_color)
相同功能的两种方式让我感到困惑,因为PEP20声明了
应该有一个 - 最好只有一个 - 显而易见的方法。
答案 0 :(得分:3)
从功能上讲,这两种方式是等效的。装饰器语法只是语法糖。
@some_decorator
def some_func():
...
......等同于......
def some_func():
....
some_func = some_decorator(some_func)
装饰器语法使你的代码更清晰(非装饰器语法意味着你必须输入三次“some_func”!)并且你的意图更明显,所以我肯定会说使用装饰器语法。