如何避免在Python中使用显式的'self'?

157

我一直在通过一些pygame教程学习Python。

其中我发现广泛使用关键字self,由于我的主要背景是Java,我发现我经常忘记输入self。例如,我会输入rect.centerx而不是self.rect.centerx,因为对我来说,rect已经是类的成员变量了。

我能想到这种情况的Java对应方式是在所有成员变量的引用前加上this

我是否必须在所有成员变量前面加上self,还是有一种声明方式可以让我避免这样做?

即使我提出的方法不符合“Pythonic”的规范,我仍然希望知道是否有可能实现。

我看过了这些相关的SO问题,但它们并不能完全回答我的问题:


6
我来自Java编程背景,觉得这很自然。但我会在每次调用时显式地添加"this"关键字,以便更清晰地指出我正在引用一个实例变量。 - Uri
4
您是否熟悉一些C++/Java程序员使用的在所有成员名称前加上“m_”前缀的约定?使用“self.”同样有助于可读性。另外,您应该阅读http://dirtsimple.org/2004/12/python-is-not-java.html。 - Beni Cherniavsky-Paskin
2
尽管通常情况下 m_ 仅用于非公共的非静态数据成员(至少在 C++ 中)。 - Roger Pate
14
那么,为什么每个人都告诉OP使用self是好的/必要的等等,但没有人说是否有办法可以以某种肮脏的技巧避免使用它? - einpoklum
还有,@Anurag:这怎么可能是自我接受的呢?:-\ - einpoklum
显示剩余4条评论
11个回答

0

是的,自己编写代码可能会很繁琐。但是,这样做是否更好呢?

class Test:

    def __init__(_):
        _.test = 'test'

    def run(_):
        print _.test

11
在Python shell中,_具有特殊含义,它保存着最后一个返回的值。可以安全地像这样使用它,但潜在地容易混淆;建议不要使用它。 - Cairnarvon
不,那并不更好,但为什么不使用单个字母,比如sm(以模仿C++)? - WestCoastProjects

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接