在类方法中使用`self`

时间:2015-12-15 21:39:57

标签: python

在类方法中使用变量名self被认为是不好的做法吗?例如:

@classmethod
def update_objs(cls, limit=10e6):
    items = PortalAsset.objects.filter(is_deleted=False, title__is_active=True)[:limit]
    for self in items:
        new_obj = {
            'objectID': self.pk
        }
        # etc.

我发现以上内容似乎更直观,我知道循环中的每个项目基本上都是该类的实例。

2 个答案:

答案 0 :(得分:3)

不要这样做。任何必须阅读你的代码的人都会希望你离开。

无论您考虑使用名称self的类方法的哪一部分,请考虑将其提取到实例方法中。然后,您可以在该方法中调用对象self

答案 1 :(得分:0)

这更多地与编码约定有关,但我相信如果你决定使用变量self,它应该具有与英文单词暗示相同的反射意义,即指代码的当前对象属于或类似的东西。

然而,我有时在一个应该是构造函数的类方法中使用该变量:

@classmethod
def new_from_file(cls, filename):
    self = cls()
    self.load_file(filename)
    return self

现在你问这个问题,我想知道这是否明智。也许像new_object这样的其他东西会更好,但我发现这里做的很明确,因为self变量实际上用于保存当前对象。