Python中的每类@property装饰器

时间:2016-11-15 22:58:46

标签: python

Python为这样的实例支持@property装饰器:

class MyClass(object):
    def __init__(self):
        self._friend_stack = [1]
    @property
    def current_friend(self):
        return self._friend_stack[0]

myobj = MyClass()
myobj.current_friend # 1

是否可以在类中使用类似的东西,以便行为类似于此(例如,与setter和getter方法一起):

class MyClass(object):
    _friend_stack = [1]

    @property
    def current_friend(cls):
        return cls._friend_stack[0]

MyClass.current_friend # 1

1 个答案:

答案 0 :(得分:6)

在Python 3中:

class MyMeta(type):
    def current_friend(cls):
        return cls._friend_stack[0]
    current_friend = property(current_friend)

class MyClass(metaclass=MyMeta):
    _friend_stack = [1]

[疯狂的笑声]