Python『玄学』故障:小括号引发的血案
warning:
这篇文章距离上次修改已过361天,其中的内容可能已经有所变动。
请观察这一段代码,思考一下问题出在哪里:
import foo
app = foo.Application
(
[1,1,4,5,1,4]
)
app.test('1919810')
如果你暂时还不能看出来的话,不妨继续往下看
这段代码看似没有什么问题,甚至VSCode(装了插件之后)静态检查也是没什么问题的
但是如果你运行起来,你会发现,Python报错了
Traceback (most recent call last):
File "E:\path\to\main.py", line 8, in <module>
app.test('1919810')
TypeError: Application.test() missing 1 required positional argument: 'self'
看出来什么问题了吗?
接下来,把代码改成这个样子:
import foo
app = foo.Application(
[1,1,4,5,1,4]
)
app.test('1919810')
你会发现,程序运行正常,输出也正常
这就是这个玄学故障的原因:调用一个类的方法之前得对其进行实例化,但是第一段代码的写法(小括号放到第二行开头),Python不会将其识别为『你要实例化』,然后后面就没有实例化,然后就报错了
解决办法正如第二段所示,小括号写到末尾就是了
今日水贴完毕,溜了....