【发布时间】:2018-12-19 12:23:53
【问题描述】:
我了解属性和类如何在 Python 中工作,我能想到的使用属性的最清晰示例是设置温度以使其不低于绝对零。我现在想知道如果方法实际上要进行一些转换,那么使用属性是一个好主意。
从 Wikipedia 获取此属性示例:
class Pen(object):
def __init__(self):
self._color = 0 # "private" variable
@property
def color(self):
return self._color
@color.setter
def color(self, color):
self._color = color
假设颜色对于 Pen 的类很重要并且存在于其中是有意义的,但实际的值设置器看起来更像这样:
@color.setter
def color(self, rgb_hex):
self._color = hex_handler.get_color(rgb_hex)
我喜欢从对象的角度来看,你只是有颜色,但实现对某人来说有点模糊,除非他们深入研究它。那么这是使用属性的好方法还是应该更像:
def set_color_from_rgb_hex(self, rgb_hex):
self._color = hex_handler.get_color(rgb_hex)
颜色是如何产生的更清楚。
【问题讨论】:
-
混淆是重点。对用户来说,事情看起来无缝而整洁,因此他们可以编写漂亮、惯用的 Python,而无需处理繁琐的内部结构。如果您不愿意“欺骗”呼叫者了解正在发生的事情,那很好,但您在这里没有违反任何规则。
标签: python python-3.x properties