python - 为什么当我尝试创建类的对象时代码显示 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 岁。
解决方案
只是几个错误。首先,您忘记了 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()
推荐阅读
- swift - 从 SwiftUI 中的应用 ContentView 访问小部件视图
- ios - Flutter 构建 iOS - BoringSSL-GRPC/,未声明的 'SSL_get_secure_renegotiation_support';'GRPC_SHADOW_SSL_get_secure_renegotiation_support'?
- reactjs - 在 Azure 应用服务上运行 React - Express 应用
- google-cloud-platform - 使用公共和私有 IP 从 VM 连接到 Cloud SQL 实例 - 如何确保为连接选择正确的网络接口?
- kotlin - Kotlin 基础知识:RatingBar、听众
- excel - 将 excel 中每批 24RX56C 转置为 56 行 X24c 的列
- android - 如何查看android静态库的ABI?
- admob-rewardedvideoad - 如何制作不可跳过的广告?(AdMob)
- go - Golang 返回函数
- python - Django (Password_change) 不起作用 url