MyTetra Share
Делитесь знаниями!
Аналог декоратора @property для методов класса в Python
Время создания: 31.03.2019 18:27
Автор: br0ke
Текстовые метки: python, decorator, property, classmethod, class, method, getter, setter
Раздел: Информационные технологии - Python
Запись: and-semakin/mytetra_data/master/base/1554038854csfhx79cjt/text.html на raw.githubusercontent.com

В Python есть декораторы @property и @classmethod. Вопрос: а можно ли сделать свойство из метода класса?


Наивный подход:


class Foo(object):


@property

@classmethod

def foo(cls):

return 1


Foo.foo # <property at 0x7f74cd037bd8>


Но так это не работает, декораторы нельзя совмещать. Рабочее решение поражает своей простотой:


class classproperty(object):


def __init__(self, fget):

self.fget = fget


def __get__(self, owner, cls):

return self.fget(cls)


class Foo(object):


@classproperty

def foo(cls):

return 1


print Foo.foo

>>> 1

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования