不幸的是,我不知道标题与下面描述的问题有多少对应,如果它可以被认为是一个问题。
例如,有一个函数:
def handler(service , command, *args, **kwargs):
if command not in ['create', 'update', 'delete', 'list']:
...
service.do_smth()
例如,我知道服务对象是特定类的实例。尝试调用类方法时,要么一味地调用方法,要么带着类爬进模块,看方法名。争论甚至更糟。如果在方法的情况下,如果你开始编写它们,ide\editor 会告诉你接下来要写什么,那么在参数的情况下不会发生这种情况。
最近,可以通过编写 service: ServiceType 来显式指定类型。这确实解决了问题。
类似情况
[ print(x.attr) for x in api.get_smth() ]
我必须猜测我要显示哪个属性,因为对象 x 的类型是未知的。
追问:我这么认为是正常现象,需要支付动态打字费用。唯一的问题是如何处理它?以及如何编码。
一个好的 IDE(免费的 PyCharm)可以解决这些问题。是的,你需要指定函数参数的类型,嗯,它更容易编程(尤其是一两年后返回代码)。一些 get_smth() 的返回类型将尝试由 IDE 自己计算,但您也可以显式指定它,这对于维护和文档也很有用。
您可以使用 确定对象的类型
type(),或使用 来检查对象的类型是否正确isinstance()