Home  >  Article  >  Backend Development  >  Introduction to the basic usage of property decorators in Python

Introduction to the basic usage of property decorators in Python

高洛峰
高洛峰Original
2017-03-08 11:16:051861browse

  Python的@property装饰器用来把一个类的方法变成类的属性调用,然后@property本身又创建了另一个装饰器,用一个方法给属性赋值。下面是在类中使用了@property后,设置类的读写属性,只读和只写属性。

  all方法设置的是读写属性,可以设置这个属性,也可以读取这个属性,如28行所示,如果没有定义__init__()方法的话,只能首先设置了这个属性才能使用这个属性。在32行中,如果想知道write属性的值,也是会报错的。而在34行中,也是没有办法继续给readonly这个制度属性赋值的。这里使用了@property之后,可以实现Python“私有变量”,当然不是真正的私有,真正的私有比较复杂,不过也可以通过@property实现?在之后学习了再写。

class UseProperty(object):

    def __init__(self):
        self._all = 233

    @property
    def all(self):
        return self._all

    @all.setter
    def all(self, v):
        self._all = v

    @property
    def readonly(self):
        return self._all

    @property
    def write(self):
        raise AttributeError('This is not a readonly attribute.')

    @write.setter
    def write(self, value):
        self._write = value


p = UseProperty()
print p.all
p.all = 100
print p.all
p.write = 233
# print p.write
print p.readonly
# p.readonly = 10


The above is the detailed content of Introduction to the basic usage of property decorators in Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn