我觀察到python裝飾器不需要返回一個可調用的。在django queryset中的例子下面試過。這是一種不好的做法嗎?編寫不返回可調用的裝飾器是pythonic嗎?
class MyQuerySet(models.QuerySet):
...
def each(self, save=False, func=None):
if hasattr(save, '__call__'):
func = save
save = False
for obj in self:
func(obj)
if save:
obj.save()
MyModel.objects.each(lambda x: x.delete()) # Delete all the mymodels from database
@Person.objects.each(save=True):
def make_older(person):
''' Increase age of all people '''
person.age += 1
PS:
是否在某些這種技術可以用於多種有用的目的任何情況呢?
你可以發佈一些有效的代碼:[如何創建一個最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)? –
裝飾器只是語法糖,所以問題是,你爲什麼要使用裝飾器語法呢?它使代碼更簡單還是更容易維護? – cdarke