相关疑难解决方法(0)

自我的目的是什么?

selfPython 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在Ruby中我可以这样做:

class myClass
    def myFunc(name)
        @name = name
    end
end
Run Code Online (Sandbox Code Playgroud)

我很容易理解.但是在Python中我需要包括self:

class myClass:
    def myFunc(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.

python oop class self

1061
推荐指数
17
解决办法
81万
查看次数

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

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

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

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

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

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

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

python self

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

为什么总是将self作为类方法的第一个参数添加?

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

我理解为什么self 始终是类方法的第一个参数,这是完全有道理的,但如果它总是如此,那么为什么要为每个方法定义经历打字的麻烦?为什么不在幕后自动完成?

是为了清楚还是在某种情况下你可能不想把自己作为第一个论点?

python methods class class-method

22
推荐指数
2
解决办法
2万
查看次数

将此/自指针强制显式有什么好处?

this/ self/me指针强制显式有什么好处?

根据OOP理论,一个方法应该主要(仅?)对成员变量和方法的参数进行操作.在此之后,它应该是更容易指成员变量,而不是外部的(从视图中的对象的一侧)变量...明确this使得它更详细因而更难指成员变量,而不是外部因素.这对我来说似乎很直观.

language-agnostic oop programming-languages language-theory

17
推荐指数
1
解决办法
4295
查看次数

什么时候需要"自我"?

我一直在使用类,当我编写一个方法时,我将所有变量引用为self,例如self.foo.

但是,我正在查看wxPython in Action一书,并注意到"self"并未一直使用.例如:

 import wx
 class TextFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Text Entry Example',
            size=(300, 100))
        panel = wx.Panel(self, -1)
        basicLabel = wx.StaticText(panel, -1, "Basic Control:")
        basicText = wx.TextCtrl(panel, -1, "I've entered some text!",
            size=(175, -1))
        basicText.SetInsertionPoint(0)
        pwdLabel = wx.StaticText(panel, -1, "Password:")
        pwdText = wx.TextCtrl(panel, -1, "password", size=(175, -1),
            style=wx.TE_PASSWORD)
        sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
        sizer.AddMany([basicLabel, basicText, pwdLabel, pwdText])
        panel.SetSizer(sizer)
Run Code Online (Sandbox Code Playgroud)

下面的一个确实使用"自我".

import wx
class ButtonFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Button Example',
            size=(300, 100))
        panel = …
Run Code Online (Sandbox Code Playgroud)

python wxpython

12
推荐指数
1
解决办法
6251
查看次数

自我做什么?

可能重复:
Python'self'关键字

请原谅我,如果这是一个令人难以置信的noobish问题,但我从来没有在Python中理解自我.它有什么作用?当我看到类似的东西时

def example(self, args):
    return self.something
Run Code Online (Sandbox Code Playgroud)

他们在做什么?我想我也在某个功能中看到了args.请以简单的方式解释:P

python self args

7
推荐指数
2
解决办法
1万
查看次数

在Python中将self传递给类函数

在python的类函数中传递自引用值的原因是什么?例如:

class MyClass:
    """A simple example class"""
    i = 12345
    def f(**self**):
        return 'hello world'
Run Code Online (Sandbox Code Playgroud)

通过这样做,你不是在做编译器的工作吗?

python class function

4
推荐指数
1
解决办法
6612
查看次数

python可以使用没有"self"作为第一个参数的类或实例方法吗?

可能重复:
为什么需要在Python方法中明确地使用"self"参数?
Python'self'解释道

这只是为了我自己的启发.我正在学习python并且已经使用python进入OOP.我见过的类中每个方法的例子都有"self"作为第一个参数.所有方法都是如此吗?如果确实如此,那么python是否已被编写,以至于这个参数只是被理解,因此不需要?谢谢.

python oop methods

4
推荐指数
1
解决办法
4340
查看次数

关于参数的Python TypeError

这是我的代码:

class bla:
    def function1():
        print 1
    def function2():
        bla.function1()

x = bla()

x.function2()
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我得到错误"TypeError:function2()不接受任何参数(1给定)"因为我似乎没有传递任何参数function2.

python

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

Python模块,类,方法basicks

我是python的新手,对我来说,我经历过奇怪的行为.我有两个文件:foo.py和test.py

test.py:

from foo import Foo
f = Foo()
f.bar(1)
Run Code Online (Sandbox Code Playgroud)

当我的foo.py看起来像这样:

class Foo:
    def bar(n):
        print n
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

Traceback (most recent call last):
File "test.py", line 3, in <module>
f.bar(1)
TypeError: bar() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

当我的foo.py看起来像这样:

class Foo:
    def bar(x,n):
        print n
Run Code Online (Sandbox Code Playgroud)

我得到结果:

1
Run Code Online (Sandbox Code Playgroud)

这是为什么?为什么我需要声明两个参数,即使我想要只有一个方法?谢谢

python methods module class

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