如何消除Dataclass默认属性用Lambda引发的Pylint不必要Lambda警告?
问题
以下Python脚本中,Pylint提示此处lambda可能并非必需,是否存在更简洁的替代方案?
from dataclasses import dataclass, field class ClassA: def __init__(self): pass @dataclass class ClassB: class_a: ClassA = field(default_factory=lambda: ClassA())
解决方案
当然有,直接把lambda替换成ClassA类本身即可:
from dataclasses import dataclass, field class ClassA: def __init__(self): pass @dataclass class ClassB: class_a: ClassA = field(default_factory=ClassA)
原因说明
default_factory参数接受一个无参的可调用对象,而类本身(比如ClassA)就是符合要求的可调用对象——当需要生成默认值时,调用ClassA()会创建一个实例,和原来的lambda: ClassA()逻辑完全等价。去掉lambda包装后代码更简洁,也符合Pylint的提示要求。
内容的提问来源于stack exchange,提问作者DJames
相关产品推荐
相关产品推荐

