python instance variable_实例变量Python的类型提示约定

我建议您使用第一个版本,在第一个版本中,您可以在大多数情况下为__init__方法的参数分配类型。在

该特定方法具有最少的冗余量,同时仍然允许类型检查程序验证您是否在代码的其他地方正确地调用了__init__方法。在

我建议您使用第二个或第三个版本,当您的__init__方法变得足够复杂到可以应用以下一个或多个时,可以显式地对字段进行注释(在__init__内部或外部):你的领域从什么开始就不再那么简单了

参数和字段之间不再是一对一的映射

你有复杂的初始化逻辑,模糊了如何分配字段。在

然而,我不清楚是第二个版本还是第三个版本我个人更喜欢第三个版本,因为它在概念上更清晰,似乎没有混合实例和类属性的概念,但我不能否认第二个版本看起来更干净。在

我在“typing”gitter频道上问到了这个问题,得到了来自Guido的以下回应(也许你不知道,Guido开发了Python,目前正在研究mypy和与键入相关的东西):There seem to be strong opinions either way. I do indeed prefer putting attribute annotations in the class body rather than sprinkling them throughout __init__ and other methods. I also think that with PEP 526 this will be the future (also with things like class-based NamedTuple declarations and possibly https://github.com/ericvsmith/dataclasses).

因此,第二个版本似乎比第三个版本更受推荐,并且以这种方式定义类在将来的某个时候将更深入地集成到Python语言本身中!在

{a3>似乎在{/strong}上将包含在Python3.7中。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值