gpt4 book ai didi

python - @def 与 @property、@foo.setter

转载 作者:行者123 更新时间:2023-12-01 05:45:44 25 4
gpt4 key购买 nike

我今天决定尝试学习Python,以传统的“随机尝试直到有效果”的方式进行。

我开始阅读有关类的内容,然后是属性,并尝试自己创建一些内容。大多数示例,甚至本网站问题中的示例,都定义如下属性:

class C(object):
def __init__(self):
self._x = None

@property
def x(self):
"""I'm the 'x' property."""
return self._x

@x.setter
# etc. taken from the python tutorial

当我开始在文本编辑器中输入“@pro”并点击选项卡时,它会完成:

# ... Class stuff ...
@def foo():
doc = "The foo property."
def fget(self):
return self._foo
def fset(self, value):
self._foo = value
foo = property(**foo())

这些做同样的事情吗?如果是的话,我应该使用哪一个(即哪一个被认为是更好的做法)?

最佳答案

正如已经提到的,@def foo(): 是无效语法,应该是 def foo():。需要注意的是,您发布的两个代码示例的作用几乎相同。 @ 运算符采用一个可在函数上工作的函数并将其应用于下一个定义的函数。换句话说:

@property
def the_answer():
return 42

与以下内容完全相同:

def the_answer():
return 42
the_answer = property(the_answer)

但是 @property 的编写方式更容易编写、阅读和理解,这就是为什么它被认为是更好的实践。

关于python - @def 与 @property、@foo.setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209452/

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