python - Python 中装饰器的冗余函数调用
问题描述
所以我在看一个具有以下属性函数的类。但是,属性方法本身并没有描述过程,而是调用另一个函数来执行此操作,如下所示:
class Foo():
@property
def params(self):
return self._params()
@property
def target(self):
return self._target()
def _params(self):
return print("hello")
def _target(self):
return print("world")
如果它是某种模式,我想了解什么?我在另一个类中也看到过类似的事情,其中带有属性装饰器的方法只是简单地调用另一个同名的方法,开头带有下划线。注意:我确实知道什么是属性装饰器,但不明白为什么这种特定的强调方式旨在实现。
解决方案
实际上,该属性被用作调用具有固定参数集的方法的快捷方式。作为一个稍微不同的例子,考虑
class Foo():
@property
def params(self):
return self._params(1, "foo", True)
def _params(self, x, y, z):
...
f = Foo()
现在,f.params
是f._params(1, "foo", True)
. 这是否值得做取决于是否_params
用于实现getter主体以外的任何其他用途。params
如果不是这样,那么编写这样的代码就没有什么意义了。
推荐阅读
- excel - 带有链接的下拉列表excel
- html - “.col-md-6”内“.row”的整个一半的 CSS 背景
- javascript - 我的 javascript 是否正确连接到 HTML 并触发?
- c# - 为什么我的列表框没有显示多个项目?
- entity-framework-6 - EntityFramework 6 AsNoTracking 和投影
- javascript - 在 javascript 函数中更改 HTML 元素的 .onClick 元素的最佳方法是什么?
- ssh - 不总是通过 SSH 工作
- json - Explicitly providing schema in a form of a json in Spark / Mongodb integration
- hyperledger-composer - 在 hyperledger-composer 的“命名查询”中访问数组属性
- python - 将函数绑定到本地范围内的名称的好处?