gpt4 book ai didi

python - 如何在 Python 中避免显式 'self'?

转载 作者:IT老高 更新时间:2023-10-28 21:06:18 26 4
gpt4 key购买 nike

我一直在通过关注 pygame tutorials 学习 Python .

其中我发现了关键字self的广泛使用,并且我主要来自Java背景,我发现我总是忘记输入self。例如,我会输入 rect.centerx 而不是 self.rect.centerx,因为对我来说,rect 已经是类(class)。

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

我是不是一直在为所有成员变量加上 self 前缀,还是有办法声明它们可以让我避免这样做?

即使我的建议不是 pythonic,我仍然想知道它是否可能。

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

最佳答案

Python 需要指定 self。 结果是永远不会混淆什么是成员,什么不是成员,即使没有可见的完整类定义。这导致了有用的属性,例如:您不能添加意外影响非成员从而破坏代码的成员。

一个极端的例子:你可以在不知道它可能有哪些基类的情况下编写一个类,并且总是知道你是否正在访问一个成员:

class A(some_function()):
def f(self):
self.member = 42
self.method()

这就是完整代码! (some_function 返回用作基础的类型。)

另一个,类的方法是动态组合的:

class B(object):
pass

print B()
# <__main__.B object at 0xb7e4082c>

def B_init(self):
self.answer = 42
def B_str(self):
return "<The answer is %s.>" % self.answer
# notice these functions require no knowledge of the actual class
# how hard are they to read and realize that "members" are used?

B.__init__ = B_init
B.__str__ = B_str

print B()
# <The answer is 42.>

请记住,这两个示例都很极端,您不会每天都看到它们,我也不建议您经常编写这样的代码,但它们确实清楚地表明了 self 的某些方面被明确要求。

关于python - 如何在 Python 中避免显式 'self'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1984104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com