Python中的类实例声明语法错误

时间:2013-07-30 08:25:37

标签: python

我正在尝试使用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文档。

3 个答案:

答案 0 :(得分:2)

Python喜欢使语法非常清晰 - 函数在调用没有参数的函数时不是可选的() s,就像在其他语言中一样。

你并没有把这些功能称为'陈述'它们。

尝试

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.

从语法上讲,代码是有效的。

答案 1 :(得分:2)

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

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

say = Abc()
say.b()

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

答案 2 :(得分:0)

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

我想,你只是将代码粘贴到你的Python shell窗口中。这样,事情将无法正常工作,因为缩进不能正确生成。 尝试将行class Abc:粘贴到shell窗口中,然后按Enter。您将看到IDLE使用制表符自动缩进下一行。这是以下行的正确缩进,因此当您输入它时,您需要粘贴def a(self):而不需要任何额外的缩进!如果您逐行粘贴并在需要时将缩进减少一个,并使用额外的Enter终止类定义,则代码将正确执行。

但是,您应该更好地使用以下方法:

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

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