如何在Python中避免显式的“self”?

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

在这里,我发现关键字self被广泛使用,而且我主要来自Java背景,我发现我总是忘记键入self。例如,我会键入rect.centerx,而不是self.rect.centerx,因为对我来说,rect已经是类的成员变量

在这种情况下,我能想到的Java并行方法是必须在所有对成员变量的引用前面加上this

我是否总是在所有成员变量前面加上self,或者是否有一种方法可以声明它们,从而避免这样做

即使我所建议的不是pythonic,我还是想知道这是否可行

我已经看了这些相关的SO问题,但它们并没有完全回答我的问题:

  • Python-为什么在类中使用“self”
  • 为什么需要将“self”参数显式地放入Python方法中

Python需要指定self。结果是,即使没有完整的类定义,也不会对什么是成员和什么不是成员产生任何混淆。这将产生有用的属性,例如:不能添加意外地对非成员进行阴影处理从而破坏代码的成员

一个极端的例子:您可以编写一个类,而不知道它可能有什么基类,并且始终知道您是否正在访问成员:

A类(某些函数()):
def f(自我):
self.member=42
self.method()

这就是完整的代码!(某些函数返回用作基的类型。)

另一种情况是,类的方法是动态组合的:

B类(对象):
通过
打印B()
#&lt__0xb7e4082c处的主\uuuuub.B对象>
def B_初始(自):
self.answer=42
def B_str(自我):
return“<答案是%s.>%self.answer
#注意,这些函数不需要了解实际的类
#他们阅读和意识到使用“成员”有多困难?
B.。uuu init_uuuu=B_init
B.。uuu str_uuuu=B_ustr
打印B()
#<答案是42;

记住,这两个例子都是极端的,你不会每天都看到它们,我也不是建议你经常写这样的代码,但它们确实清楚地显示了自我明确需要的方面

发表评论