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就是一个位置参数,名字自定义放第二位就是一样的效果,但一般都用约定成俗的命名方式方便维护,除非有特殊的应用场景。