gpt4 book ai didi

python - Python 的 property() 应该用作装饰器还是保存到变量中?

转载 作者:行者123 更新时间:2023-11-30 23:38:57 27 4
gpt4 key购买 nike

这是使用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声明

There should be one-- and preferably only one --obvious way to do it.

最佳答案

从功能上讲,这两种方法是等效的。装饰器语法只是语法糖。

@some_decorator
def some_func():
...

...相当于...

def some_func():
....
some_func = some_decorator(some_func)

装饰器语法使您的代码更加清晰(非装饰器语法意味着您必须输入“some_func”三次!)并且您的意图更加明显,所以我认为一定要使用装饰器语法。

关于python - Python 的 property() 应该用作装饰器还是保存到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com