任何时候你都可以开始做自己想做的事

搜索|
DJANGO 函数中,参数obj和instance 的区别
发布时间:2025-01-13 01:27:51

obj 和 instance 本质上是可以互换的,它们都是用于表示类实例的变量名。在 Python 中,函数参数的名字本身并没有特殊的语义意义;它们只是标识符,用来引用传递给函数的实际对象。因此,你可以将这些参数命名为任何合法的标识符名称,而不会影响代码的功能。

obj:适用于处理已有对象的情景,如遍历、展示和读取数据。

instance:适用于涉及对象生命周期的操作,如创建、修改和删除。

遵循这种命名约定可以提高代码的可读性和一致性,使其他开发者更容易理解你的代码意图。因此,在 admin 方法中处理已有对象时使用 obj,而在创建、修改或删除对象的过程中使用 instance 是一种良好的实践。


如果你坚持要更改变量名,确保在整个项目中保持一致,并通过注释或其他文档形式明确说明变量的用途,以避免混淆。

class DomainapiAdmin(admin.ModelAdmin):


# 自定义方法

    def abc(self, obj):

        return obj.xxxx
#等同于:

# 自定义方法

    def abc(self, instance):

        return instance.xxxx

#等同于:


# 自定义方法


    def abc(self, abc):


        return abc.xxxx



admin.site.register(Domainapi, DomainapiAdmin)

在这个场景中,obj就是一个位置参数,名字自定义放第二位就是一样的效果,但一般都用约定成俗的命名方式方便维护,除非有特殊的应用场景。