0

我正在尝试使用 python 中的类。我尝试运行以下代码。

class Abc:
    def a(self):
        print ("not to be seen")
    def b(self):
        print("inaccessible is")
        self.a

say = Abc()
say.b

我期待输出为

inaccessible is
not to be seen

相反,我得到以下输出:

SyntaxError: invalid syntax

说突出显示。

请有人指出我做错了什么。

编辑:我正在使用 IDLE GUI。Python 33 说 Python 文档。

4

3 回答 3

2

Python likes to make syntax very clear - the ()s after a function are not optional when calling a function without parameters like in some other languages.

You're not calling the functions just 'stating' them.

Try

class Abc:
    def a(self):
        print ("not to be seen")
    def b(self):
        print("inaccessible is")
        self.a()

say = Abc()
say.b()

Here is the code working.

Syntactically, the code is valid.

于 2013-07-30T08:29:34.687 回答
2

你几乎拥有它。您需要通过添加来调用函数(),如下所示:

class Abc:
    def a(self):
        print ("not to be seen")
    def b(self):
        print("inaccessible is")
        self.a()

say = Abc()
say.b()

其实我很困惑为什么你的代码会抛出语法错误。在 Python 中,声明一个函数是有效的。

于 2013-07-30T08:38:27.570 回答
0

好的,我可以通过为 Python 3.3.0 安装 idle 来重现您的错误。很抱歉,我们都怀疑您没有包含整个错误消息,因为 IDLE 只会产生一个 red SyntaxError: invalid syntax。您的代码和类定义都没有问题。

我猜,您只是将代码按原样粘贴到您的 Python shell 窗口中。这样,事情就不会起作用,因为压痕没有正确产生。尝试将该行粘贴class Abc:到您的 shell 窗口中,然后按Enter。您将看到 IDLE 自动使用制表符缩进下一行。这是下面一行的正确缩进,所以当你输入它时,你需要粘贴def a(self):没有任何额外的缩进!如果您逐行粘贴并在需要时将缩进减少一个并使用 extra 终止您的类定义Enter,您的代码将正确执行。

但是,您最好使用以下方法:

  • 将您的文件粘贴到编辑器中并将其另存为whatever.py
  • 在 IDLE 中,选择File -> Open并打开此文件
  • 将打开一个新窗口,其中包含您的源代码。
  • 现在,按F5或说Run -> Run Module
  • 您的代码将被执行,结果将显示在 Python Shell 中。

或者,更好的是,通过直接执行python whatever.py直接在 shell 中使用 Python。

于 2013-07-30T14:01:37.130 回答