gpt4 book ai didi

python - Pylint:如何使用属性类指定自定义属性装饰器?

转载 作者:行者123 更新时间:2023-12-05 01:42:43 26 4
gpt4 key购买 nike

对于使用自定义属性装饰器的 Python 代码,Pylint 报告错误 E0202(方法隐藏)。我尝试使用 property-classes 选项失败了。

这里是props.py

from functools import wraps

def myproperty(func):
@wraps(func)
def fget(self):
return func(self)
return property(fget)

testimport.py:

#!/usr/bin/python

from props import myproperty

class E0202(object):

def __init__(self):
self._attr = 'attr'
self._myattr = 'myattr'

@property
def attr(self):
return self._attr

@attr.setter
def attr(self, value):
self._attr = value

@myproperty
def myattr(self):
return self._myattr

@myattr.setter
def myattr(self, value):
self._myattr = value

def assign_values(self):
self.attr = 'value'
self.myattr = 'myvalue'

if __name__ == '__main__':
o = E0202()
print(o.attr, o.myattr)
o.assign_values()
print(o.attr, o.myattr)

使用 Python 2.7.13 运行代码会产生预期的结果:

$ python test.py
('attr', 'myattr')
('value', 'myvalue')

Pylint 1.6.5 报告自定义属性错误,但不报告常规属性错误:

$ pylint -E --property-classes=props.myproperty testimport.py 
No config file found, using default configuration
************* Module testimport
E: 20, 4: An attribute defined in testimport line 29 hides this method (method-hidden)

第29行是自定义属性的setter的使用:

        self.myattr = 'myvalue'

pylint 的正确选项是什么?或者这是误报?

最佳答案

不确定我是否遇到了与您相同的问题,因为我遇到了no-member 错误。

我正在使用的装饰器名为 @memoized_property,我可以通过将其添加到我的 pylintrc 来解决问题:

init-hook="import astroid.bases; astroid.bases.POSSIBLE_PROPERTIES.add('memoized_property')"

(您也可以将其作为参数传递给 pylint:--init-hook="import astroid.bases; astroid.bases.POSSIBLE_PROPERTIES.add('memoized_property')")

关于python - Pylint:如何使用属性类指定自定义属性装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51160955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com