首页 > 解决方案 > 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")

如果它是某种模式,我想了解什么?我在另一个类中也看到过类似的事情,其中​​带有属性装饰器的方法只是简单地调用另一个同名的方法,开头带有下划线。注意:我确实知道什么是属性装饰器,但不明白为什么这种特定的强调方式旨在实现。

标签: pythondesign-patternsdecoratorpython-decorators

解决方案


实际上,该属性被用作调用具有固定参数集的方法的快捷方式。作为一个稍微不同的例子,考虑

class Foo():

    @property
    def params(self):
        return self._params(1, "foo", True)

    def _params(self, x, y, z):
        ...

f = Foo()

现在,f.paramsf._params(1, "foo", True). 这是否值得做取决于是否_params用于实现getter主体以外的任何其他用途。params如果不是这样,那么编写这样的代码就没有什么意义了。


推荐阅读