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

问题描述

Python Lint 不会检测到错误类成员。它继续运行我的代码,我在下面有 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 中的问题。

顺便说一句,与评论中所说的相反,您的代码是有意义的。唯一的事情是你不必在 python 中做显式的 getter/setter。您可以拥有公共属性:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...