Я столкнулся со следующей проблемой с Pylint:
Учитывая следующий минимальный пример:
#tpack/__init__.py
class C:
@property
def ans(self):
return 42
def f(c):
return C.ans.fget(c)
Pylint выдает следующую ошибку:
>pylint -d missing-docstring -d invalid-name -d too-few-public-methods tpack
************* Module tpack
tpack\__init__.py:7:11: E1101: Method 'ans' has no 'fget' member (no-member)
------------------------------------------------------------------
Your code has been rated at 0.00/10 (previous run: 0.00/10, +0.00)
Версия Pylint:
>pylint --version
pylint 2.1.1
astroid 2.0.4
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)]
Это известная проблема с Pylint?
Редактировать:
Кажется, существует некоторая путаница в использовании этого фрагмента кода.
Вот пример:
>python
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from tpack import *
>>> c = C()
>>> f(c)
42
При доступе к свойству через класс получается фактический объект свойства, созданный декоратором.Благодаря этому можно получить доступ к функциям-членам объекта свойства.fgets
является получателем.Нужно просто передать ему объект типа C
, и свойство будет возвращено.