在写python类的时候,虽然可以通过“实例名.变量名”的方式对实例中的变量进行读取和赋值。但出于规范性等等原因,我们最好还是写getter和setter,不过这样的话在读取变量和赋值时代码就显得有些臃肿,也不那么随心所欲了。那么有没有即保证数据规范性又直接简单访问数据的方式呢?有,使用property() 函数和@property修饰符。

# coding=utf-8class Foo(object):def __init__(self,name):self.__name=name #self.__name自动变形为self._Foo__name私有属性@property  #read定义特性def name(self):return self.__name   @name.setter  #write 向特性附加setter方法实现写操作def sname(self,value):if not(isinstance(value,str)):raise TypeError("Must be a string!")self.__name=value@name.deleter #delete 向特性附加deleter方法实现删除操作def name(self): del self.__name  f=Foo("Guido")
n=f.name   #调用f.name()-get函数
#m=f.sname(2) ???先调用第一个特性函数,得到str,在进行()TypeError: 'str' object is not callable
f.sname="Monty"  #调用setter name(f,"Monty")函数
f._Foo__name=1 #仍可通过变形后的属性名称进行属性访问,并非真正“私有”
print(f.name)
#1
del f.name   #调用deleter name(f)函数
print(f.name)
#AttributeError: 'Foo' object has no attribute '_Foo__name'

Python 使用特性对属性进行访问相关推荐

  1. python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...

    python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...

  2. Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  3. python属性访问顺序_Python 对象属性的访问

    在 Python 中,一切皆对象.属性访问可以理解为是从一个已有的对象中获得另一个对象的方法.对象属性的访问涉及到对象的 __dict__ 属性.描述符等概念,以及 __getattribute__. ...

  4. python对象的三个属性_Python 对象属性的访问

    在 Python 中,一切皆对象.属性访问可以理解为是从一个已有的对象中获得另一个对象的方法.对象属性的访问涉及到对象的 __dict__ 属性.描述符等概念,以及 __getattribute__. ...

  5. python numpy 数组元素周围_Python numpy数组元素属性及访问

    文章目录 数组对象建立后,我们经常需要查看对象的一些属性特征以及访问或更改元素赋值. 首先我们建立一个数组: import numpy as np data1 = np.array([[1,2,3], ...

  6. Python 类—类属性(私有属性、公有属性、实例属性、局部变量)类方法(实例方法、静态方法)

    1. 创建类 类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.类不存在于内存中,因此它本身并不是对象.当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例, ...

  7. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  8. 三. python面向对象(私有属性和私有方法 私有静态方法 私有类方法)

    一. 私有属性(封装) # 侠义 上的封装 面向对象的三大特性之一 # 属性 和 方法都隐藏起来 不让你看到 # 如果要让内部属性不被外部属性直接访问 在属性前加上两个下划线__ # 在python中 ...

  9. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...

最新文章

  1. 从人工“智障”到人工智能,AI交互还缺什么?
  2. [CareerCup] 16.2 Measure Time in a Context Switch 测量上下文转换的时间
  3. Pycharm使用matplotlib绘图时无法显示中文问题
  4. STM32那点事(5)_ADC(中)
  5. tika提取pdf信息异常
  6. Sun Solaris Sybae客户端”安装”日记
  7. Python vs Matlab—— find 与 np.where
  8. [AlwaysOn Availability Groups]健康模型 Part 1——概述
  9. Hadoop 各组件介绍
  10. WAP,手机网站建站资料收集 - 老古董
  11. 迈普路由器访问控制列表配置命令_迈普路由器配置手册
  12. 2018安徽省考c语言笔试答案,2018年安徽公务员考试行测真题解读
  13. 恶趣味程序之《徒有其表》
  14. Linux的du 和 df 的区别
  15. 腾讯云ubuntu安装桌面
  16. 【路径规划】基于鲸鱼算法求解带时间窗开放式车辆路径问题附matlab代码
  17. 模拟通讯录系统2.0
  18. html一般资源放在那里,css一般放到哪里?
  19. C语言实现韩信点兵算法的代码
  20. 破 AI 天网?马斯克脑机接口实现与猪连接

热门文章

  1. 面试:MySQL InnoDB 事务隔离
  2. CentOS 7 odoo12 部署
  3. Tomcat8史上最全优化实践
  4. Spring面试问题与解答
  5. MacOSX系统下HomeBrew安装指定版本的软件 IntelliJ IDEA 设置多个Go语言版本开发
  6. 虚拟局域网——vlan (讲解+配置)
  7. 程序员如何跨过自我推销的难关?
  8. 【熊猫多模式站群开发日志】权限控制拦截器
  9. centos root密码_如何在CentOS中恢复丢失的root密码
  10. Mybatis Generator生成工具使用