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

2024-06-02 06:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我从来没有这样做过,它似乎黑客,但我已经测试,它确实工作。这种形式可以吗:

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问题之后,我对用函数参数做一些奇怪的事情感到有些不安。你知道吗


Tags: fromimportbyreturnobjectpdfmodelsdef
1条回答
网友
1楼 · 发布于 2024-06-02 06:17:04

但那不是你要做的。你在传递一个类,而不是一个模块。pdf显然是一个Django模型类,因为它有一个objects属性。你知道吗

不过,两种方式都可以。类和模块是第一类对象,传递它们、在函数中使用它们等都是完全可以的

相关问题 更多 >