Декоратор недвижимости - PullRequest
2 голосов
/ 26 июня 2011

У меня есть декоратор свойств так:

def Property(f):  
    """
    Allow readable properties without voodoo.
    """
    fget, fset, fdel = f()
    fdoc = f.__doc__
    return property(fget, fset, fdel, fdoc)

Используется (например) так:

    @Property
    def method():
        """"""
        def fget(self):
            return some expression...
        return fget, None, None

Так что мой вопрос о том, как это сделать на python.Пидев жалуется на

"метод method должен иметь self в качестве первого параметра"

И Pylint дает мне

Метод не имеет аргументов

Я знаю, что могу отключить это сообщение об ошибке в pydev, но мне интересно, есть ли лучший способ управлять методами, которые не принимают self в качестве параметра, что я могу сделать лучше.

1 Ответ

10 голосов
/ 26 июня 2011

Вы можете использовать @ staticmethod для создания метода, который не получает неявный первый аргумент. Разве Python @ property декоратор уже делает то, что вы хотите?

class Foo(object):
    @property
    def bar(self):
        return 'foobar'

>>> foo = Foo()

>>> foo.bar
<<< 'foobar'
...