视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
详解python的property语法的使用方法
2020-11-27 14:15:14 责编:小采
文档
 Python中有一个property的语法,它类似于C#的get set语法,其功能有以下两点:

将类方法设置为只读属性;

实现属性的getter和setter方法;

下面着重说明这两点:

将类方法设置为只读属性

首先请阅读下面的代码

class Book(object):
 def __init__(self, title, author, pub_date):
 self.title = title
 self.author = author
 self.pub_date = pub_date
 
 @property
 def des_message(self):
 return u'书名:%s, 作者:%s, 出版日期:%s' % (self.title, self.author, self.pub_date)

在这段代码中,将property作为一个装饰器修饰des_message函数,其作用就是将函数des_message变成了类的属性,且它是只读的。效果如下:

如上图所示,方法变成了属性,可以用访问属性的方式访问它。但是如果修改它的值,则会报错AttributeError错误,它是只读的

实现属性的getter和setter方法

接着查看以下代码:

class Array(object):
 
 def __init__(self, length=0, base_index=0):
 assert length >= 0
 self._data = [None for i in xrange(length)]
 self._base_index = base_index
 
 def get_base_index(self):
 return self._base_index
 
 def set_base_index(self, base_index):
 self._base_index = base_index
 
 base_index = property(
 fget=lambda self: self.get_base_index(),
 fset=lambda self, value: self.set_base_index(value)
 )

这里我们给类Array设置了一个base_index属性,它使用property实现了base_index的fget,fset功能,base_index是可读可写的,效果如下:

如上图所示,base_index是可读可写的。

最后

property是Python的很好的语法特性,我们应该在编程中经常使用它。

下载本文
显示全文
专题