Python内置函数进阶之“属性(property())”详解
来源:互联网 发布:淘宝双11 销售额 编辑:程序博客网 时间:2024/05/18 09:22
属性函数(property)有以下作用:
- 将类方法转换为只读属性
- 重新实现一个属性的setter和getter方法
将类方法转换为只读属性
class Person(object): """""" #---------------------------------------------------------------------- def __init__(self, first_name, last_name): """Constructor""" self.first_name = first_name self.last_name = last_name #---------------------------------------------------------------------- @property def full_name(self): """ Return the full name """ return "%s %s" % (self.first_name, self.last_name)
以上创建了
两个类属性:self.first_name和self.last_name
一个full_name方法
调用full_name方法为person.full_name(),用@property变为person.full_name
>>> person = Person("Mike", "Driscoll")>>> person.full_name'Mike Driscoll'>>> person.first_name'Mike'>>> person.full_name = "Jackalope"Traceback (most recent call last): File "<string>", line 1, in <fragment>AttributeError: can't set attribute
但他只具有只读属性,不能更改
Python进阶之“属性(property)”详解
Python 中的 property 属性
两个等同的代码:
class Foo: def __init__(self,val): self.__NAME=val #将所有的数据属性都隐藏起来 @property #get def name(self): return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置) @name.setter #set def name(self,value): if not isinstance(value,str): #在设定值之前进行类型检查 raise TypeError('%s must be str' %value) self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME @name.deleter #delete def name(self): raise TypeError('Can not delete')f=Foo('egon')print(f.name)# f.name=10 #抛出异常'TypeError: 10 must be str'del f.name #抛出异常'TypeError: Can not delete'
class Foo: def __init__(self,val): self.__NAME=val #将所有的数据属性都隐藏起来 def getname(self): #get return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置) def setname(self,value): #set if not isinstance(value,str): #在设定值之前进行类型检查 raise TypeError('%s must be str' %value) self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME def delname(self): #delete raise TypeError('Can not delete') name=property(getname,setname,delname) #最后把方法变成属性#一种property的古老用法
阅读全文
0 0
- Python内置函数进阶之“属性(property())”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- Python进阶之“属性(property)”详解
- python 进阶之属性函数property
- Python “属性(property)”详解
- python进阶--内置函数
- Android动画效果之Property Animation进阶(属性动画)
- Android动画效果之Property Animation进阶(属性动画)
- android动画效果之Property Animation进阶(属性动画)
- python学习-面向对象进阶之属性property(七)
- python学习笔记(21)--类的详解3-属性函数(@property)
- python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解
- Python属性函数property
- LTE物理传输资源(1)-帧结构和OFDM符号
- 学习hadoop的hdfs开发(java)
- Redis主从复制和哨兵模式
- C++的类:深拷贝与浅拷贝
- HTML Input 表单校验之datatype
- Python内置函数进阶之“属性(property())”详解
- 讲给Android程序员看的前端教程(33)——Window
- [Leetcode] 451. Sort Characters By Frequency 解题报告
- Sigmoid函数与损失函数求导
- Receiver 分发详解
- 三分钟明白 Activity工作流 -- java运用
- Java,Python,Scala比较(二)类与继承
- [php_12]PHP之Mysql操作php7安装pdo_psql扩展
- C++ Primer 知识点总结 (第三章)