关于python:如何避免使用’self’这么多

How to avoid using 'self' so much

本问题已经有最佳答案,请猛点这里访问。

我正在编写一个程序来模拟一个小型物理系统,当我编写这样的东西时,我变得越来越恼火:

K = 0.5 * self.m * self.v**2

在上面的例子中,这个方程很短,也很容易理解,但是我遇到的情况是,self太多了,以至于整个事情看起来一团糟。我知道python总是要求self引用类成员,但是有没有办法让代码看起来不像self的马赛克?

编辑:我通常会做如下的事情:

var = self.var

继续使用var,而不是self.var。后来我这样做:

self.var = var

但这似乎很愚蠢。解决这个问题的方法是什么?


如果您只想保存一些按键,则可以将self重命名为s

1
2
3
class MyClass(object):
    def kinetic_energy(s): # use s instead of self for brevity
        return 0.5 * s.m * s.v**2

这样每次使用self都可以节省3个字符。这违反了标准惯例,但没有什么能阻止你这样做。我建议不要在普通代码中这样做,但如果它能使一些非常长的公式更易于阅读,则可能是合理的。一定要在评论中提到这个不寻常的选择,以防其他人在你很久不在的时候不得不阅读你的代码。


对于混乱的部分,我将使用python模块和"模块级变量"而不是类。


我想可以在python中使用一些黑色魔法,然后开发一个上下文管理器,它将获取一个对象并将其所有属性放在上下文的locals()中,然后将其分配回__exit__函数中的对象。

找到此https://code.google.com/p/ouspg/wiki/anonymousblocksinpython,可能会有所帮助。