将* class *作为函数参数传递

时间:2014-07-23 19:37:33

标签: python django design-patterns module

我之前从未这样做过,而且看起来很糟糕,但我已经过测试,确实有效。这被认为是好的形式:

from audio.models import audio
from document.models import pdf

def count_object_by_sha1(object_type, sha1):
    return object_type.objects.filter(sha1=sha1).count()

pdf_count = count_object_by_sha1(pdf, 'somesha1valuehere')
audio_count = count_object_by_sha1(audio, 'somesha1valuehere')

基本上,我将类传递给函数并使用它来对一个或另一个django对象进行查询。感觉就像一个黑客...但它的工作原理使我的代码变得相当简单。

在遇到the mutable object in function call问题之后,我对使用函数参数做奇怪事情感到有些不安。

1 个答案:

答案 0 :(得分:2)

这不是你正在做的事情。你传递的是课程,而不是模块。 pdf显然是一个Django模型类,因为它具有objects属性。

不管怎么说都没关系。类和模块是一流的对象,传递它们,在函数中使用它们是完全可以的。