相关疑难解决方法(0)

为什么需要在Python方法中明确地使用"self"参数?

在Python中定义类的方法时,它看起来像这样:

class MyClass(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

但是在其他一些语言中,例如C#,您可以使用"this"关键字引用该方法绑定的对象,而不将其声明为方法原型中的参数.

这是一个有意的语言设计决策在Python或是否有一些实现细节需要传递"自我"作为参数?

python oop methods self

187
推荐指数
6
解决办法
9万
查看次数

如何在Python中避免明确的"自我"?

我通过一些pygame教程学习Python .

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

对于这种情况,我可以想到的Java并行是必须使用前缀对成员变量的所有引用作为前缀.

我是否坚持使用self为所有成员变量添加前缀,或者有没有办法声明它们可以让我避免这样做?

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

我已经看过这些相关的SO问题,但他们并没有完全回答我的想法:

python self

112
推荐指数
7
解决办法
4万
查看次数

Python - 为什么在课堂上使用"self"?

这两个班级有何不同?

class A():
    x=3

class B():
    def __init__(self):
        self.x=3
Run Code Online (Sandbox Code Playgroud)

有什么显着差异吗?

python oop

80
推荐指数
4
解决办法
5万
查看次数

Python'self'关键字

我是Python新手(通常使用C#),在过去几天开始使用它.

在一个类中,您是否需要对该类数据成员和方法的任何调用加前缀?那么,如果我正在调用一个方法或从该类中获取一个值,那么我需要使用self.method()或者self.intvalue,例如?

我只是想检查一下我还没有遇到过那种冗长的方式.

python

57
推荐指数
3
解决办法
6万
查看次数

为什么pythonistas将当前引用称为"self"而不是"this"?

Python是我最了解的语言,奇怪的是我仍然不知道为什么我在Java或PHP中键入"self"而不是"this".

我知道Python比Java早,但我无法弄清楚它是从哪里来的.特别是因为您可以使用任何名称而不是"自我":程序将正常工作.

那么这个约定来自哪里?

python

48
推荐指数
7
解决办法
3843
查看次数

Python,__ init__和自我混淆

好吧,所以当我遇到这个时,我正在看一些来源:

>>> def __parse(self, filename):
...         "parse ID3v1.0 tags from MP3 file"
...         self.clear()
...         try:
...             fsock = open(filename, "rb", 0)
...             try:
...                 fsock.seek(-128, 2)
...                 tagdata = fsock.read(128)
...             finally:
...                 fsock.close()
...             if tagdata[:3] == 'TAG':
...                 for tag, (start, end, parseFunc) in self.tagDataMap.items():
...                     self[tag] = parseFunc(tagdata[start:end])
...         except IOError:
...             pass
... 
Run Code Online (Sandbox Code Playgroud)

所以,我决定测试一下.

 >>> __parse("blah.mp3")
Run Code Online (Sandbox Code Playgroud)

而且,我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __parse() takes exactly 2 arguments (1 …
Run Code Online (Sandbox Code Playgroud)

python init self

3
推荐指数
1
解决办法
3416
查看次数

Python中'self'和'__init__'表达式的含义是什么?

我不明白这些是用什么的,尤其是self论证?有些人可以向我解释这个问题吗?为什么你要传递这个呢?

此外,我一直认为__init__是'初始化',但我没有想过我以前从来没有在这里放任何东西.有人能给我一个简单的例子吗?

编辑:我每次看到self被传递到函数或其他类似的东西时都会感到困惑.

python init self

0
推荐指数
1
解决办法
537
查看次数

标签 统计

python ×7

self ×4

init ×2

oop ×2

methods ×1