gpt4 book ai didi

Python - 类定义中的多个@property 语句?

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:29 25 4
gpt4 key购买 nike

加快学习类(class)的进度。我一直在读到构造函数(Python 中的 def init)应该只设置分配的变量,计算实例属性应该通过属性设置。此外,使用 @property 优于 Java 风格的 getter/setter

好的,但是我在这方面看到的每个示例都只设置了一个属性。假设我有一个包含三个复杂属性的对象,需要计算、查询等。你如何表示多个@property getterssettersdeleters ?这是来自另一个 post 的示例:

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

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

@x.setter
def x(self, value):
self._x = value

@x.deleter
def x(self):
del self._x

所以如果我有三个实例变量,它们是根据其他一些属性计算出的值,它会像这样吗

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

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

@x.setter
def x(self, value):
self._x = value

@x.deleter
def x(self):
del self._x

@property
def y(self):
"""I'm the 'y' property."""
return self._y

@y.setter
def y(self, value):
self._y = value

@y.deleter
def y(self):
del self._y

@property
def z(self):
"""I'm the 'z' property."""
return self._z

@z.setter
def z(self, value):
self._z = value

@z.deleter
def z(self):
del self._z

或者说我只见过一个 @property声明意味着拥有一个以上的类 @property是个坏主意吗?

最佳答案

不,您可以根据自己的喜好使用多个 @property 装饰器。显然,除了示例作者的想象力之外,这里没有限制。

Python 标准库中有很多@property,如果你想要例子的话可以使用:

  • numbers为 Python 中的数字类定义 ABC。

  • tempfile实现临时文件对象

  • threading提供更高级别的线程支持

  • urlparse用于处理 URL 和查询字符串。

等等

你说对了;多个属性看起来与您发布的完全一样。

关于Python - 类定义中的多个@property 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918561/

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