Python - 属性和 Pylint

Yan*_*ani 5 python properties pylint python-decorators

我在这里做了一些非Pythonic的事情吗?或者这是一个 pylint bug?

class Thing(object):
    """
    Thing used for stackoverflow example.
    """

    def __init__(self, something):
        """
        Initialize Thing.
        """

        # Set defaults.
        self._something = None

        # Set values using getter/setter methods - this allows for checks.
        self.something = something

    @property
    def something(self):
        """
        Get something
        """
        return self._something

    @something.setter
    def something(self, value):
        """
        Set something.
        """
        # Some value checking here.
        self._something = value
Run Code Online (Sandbox Code Playgroud)

我的印象是使用属性装饰器是实现属性的合理方式。皮林特则不然。Pylint 给我以下错误:

Thing: Too many instance attributes (2/1)
Thing.something: An attribute affected in thing line 10 hide this method
Run Code Online (Sandbox Code Playgroud)

如果我以旧的方式实现该属性,我不会遇到同样的问题。

class Thing(object):
    """
    Thing used for stackoverflow example.
    """

    def __init__(self, something):
        """
        Initialize Thing.
        """

        # Set defaults.
        self._something = None

        # Set values using getter/setter methods - this allows for checks.
        self.set_something(something)

    def get_something(self):
        """
        Get something
        """
        return self._something

    def set_something(self, value):
        """
        Set something.
        """
        # Some value checking here.
        self._something = value

    something = property(get_something, set_something)
Run Code Online (Sandbox Code Playgroud)