首页 > 解决方案 > 为什么当我尝试创建类的对象时代码显示 SyntaxError: invalid syntax?

问题描述

我创建了一个名为 Boy 的类,并尝试创建一个对象 b1 (b1= Boy()),但这一行显示错误。

完整代码如下:

class Boy:
    name='JOHN'
    age='21'
    def say_hello(self):
        print('Hello! My name is %s and I am %s years old' % (self.name,self.age)
b1=Boy()
b1.say_hello()

错误信息如下:

runfile('C:/Users/kesha/.spyder-py3/edugrad.py', 
wdir='C:/Users/kesha/.spyder-py3')
Traceback (most recent call last):

File "C:\ProgramData\Anaconda3\lib\site- 
packages\IPython\core\interactiveshell.py", line 3325, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)

File "<ipython-input-1-d5ee685f3657>", line 1, in <module>
runfile('C:/Users/kesha/.spyder-py3/edugrad.py', 
wdir='C:/Users/kesha/.spyder-py3')

File "C:\ProgramData\Anaconda3\lib\site- 
packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)

File "C:\ProgramData\Anaconda3\lib\site- 
packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/kesha/.spyder-py3/edugrad.py", line 13
b1=Boy()
 ^
SyntaxError: invalid syntax

我尝试使用 Jupyter Notebook 在 python 控制台中运行相同的代码,它运行得很好。

预期输出: 你好!我叫约翰,今年 21 岁。

标签: python

解决方案


只是几个错误。首先,您忘记了 print 语句的最后一个括号。这实际上导致了您的错误。有时错误可能很难像这样跟踪。忘记右括号/括号/大括号是很常见的,这会导致 FOLLOWING 行报告错误(认为它是前一行的一部分。)

其次,为了让类按照您想要的方式工作,使用初始化方法将变量与 self.

最后,随着 Python 2.7 将于 2020 年结束生命周期,Python 的format命令是格式化字符串的推荐方式。

class Boy:
    def __init__(self):
        self.name='JOHN'
        self.age='21'

    def say_hello(self):
        #print('Hello! My name is %s and I am %s years old' % (self.name,self.age))
        print('Hello! My name is {} and I am {} years old'.format(self.name,self.age))
b1 = Boy()
b1.say_hello()

推荐阅读