VSCode PyLint 未检测到我的 Python DTO Class 成员

VSCode PyLint Not detecting my Python DTO Class Members

Python Lint 不会检测到不正确的 class 成员。它继续 运行 我的代码,我在下面有 productName 成员,而不是 productNameTest。它应该发送一个错误。如何解决?目前正在使用 VS Code。

产品型号:

@dataclass(init=False)
class ProductModel:
    
    productId: int
    productName: str

产品服务:

class ProductService:

    def __init__(self, productModel: ProductModel):
        self.productModel= productModel

    def getProductModel(self, curveData):
        self.productModel.productNameTest = "ABCD"  # productNameTest is not a member and should be giving error

第一个问题很好:)

这看起来像是 pylint 中的假阴性(对数据的理解不好 类 ?),您可以打开一个错误或拉取请求来解决 pylint's github.[=15= 中的问题]

顺便说一句,与评论中所说的相反,您的代码是有道理的。唯一的问题是您不必在 python 中显式地执行 getter/setter。你可以有 public 属性:

class ProductService:

    def __init__(self, product_model: ProductModel):
        self.product_model= product_model

或私有属性...

class ProductService:

    def __init__(self, productModel: ProductModel):
        self.__product_model= product_model

    @property
    def product_model(self):
        return self.__product_model


    @product_model.setter
    def product_model(self, value):
        self.__product_model = value

在这两种情况下,调用代码都是 obj.product_modelobj.product_model = new_value