python之property属性

Property的概念:property是一种特殊的属性,访问它时会执行一段功能(函数),然后返回值。

import mathclass Circle:def __init__(self,radius):#园的半径radiusself.radius=radius@property#area=property(area)def area(self):return math.pi*self.radius**2#计算面积@propertydef perimeter(self):return 2*math.pi*self.radius#计算周长c=Circle(5)print(c.radius)# print(c.area())# print(c.perimeter())print(c.area)#函数前添加装饰器后,调用时不加括号就可以运行print(c.perimeter)

  

 

为什么要用property

将一个类的函数定义成特性以后,对象再去使用的时候obj,name根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则

除此之外:

面向对象的封装有三种方式:

【public】

这种其实就是不封装,是对外公开的

【protected】

这种封装方式对外不公开,但对朋友或者子类公开

【private】
这种封装对谁都不公开

Python并没有在语法上把他们三个内建到自己的CLASS机制中,在C++里一般会将所有的数据设置为私有的,然后提供set和get方法去设置和获取,在Python中通过property方法可以实现

 

class Foo:def __init__(self,val):self.__NAME=val #将所有的数据属性都隐藏起来@propertydef name(self):return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置)@name.setterdef name(self,value):if not isinstance(value,str):  #在设定值之前进行类型检查raise TypeError('%s must be str' %value)self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME@name.deleterdef 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'

  

转载于:https://www.cnblogs.com/asaka/p/6758487.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hexo使用细节及各种问题

解决markdown图片不显示(返回403 forbidden)、添加本地图片无法显示、修改文章page模板、同时部署发布同步到多个仓库站点(Github、coding、gitee 码云) 图片不显示 在使用过程中,会发现有的引用图片无法显示的问题。但是如果直接复制图片地址到浏览器打开的话显示…

oracle的等保,Oracle等保测评相关指令

Oracle用户管理:SQL*Pluscreate user 用户名 identified by 密码; //创建用户grant 权限(dba管理员,resource普通用户,connect访客) to 用户名; //授权drop user 用户名 cascade; //删除用户,加cascade会把用户创建的所有东西删除Linux设置用…

Spring3 + JPA2 + Java EE6 App Server =配置混乱

Spring很棒,JavaEE6很棒,最新的JavaEE6 Application服务器也很棒。 这篇文章不是Spring Vs JavaEE6上的专栏文章,而是我在JBoss AS-7.1 App Server上移植Spring3 JPA2(Hibernate)应用程序的经验。 我的应用程序要求非…

python面向对象进阶(1)

面向对象进阶 isinstance(obj,cls) 检查是否obj是类cls的对象class Foo(object): passobj Foo() isinstance(obj,Foo)issubclass(sub,super) 检查sub是否是super的派生类class Foo(object): passclass Bar(Foo): passissubclass(Bar,Foo) 反射python面向对象中的反射&#xff…

智能小车37:异常在ARM、JAVA、硬件里的实现

几乎所有编程语言都有异常,可以说有程序就有异常。今天学习Arm的中断(异常)处理,联想到Java的异常,硬件中如何实现等问题,下面给大家分享一下。 一、Arm的中断。 1.触发异常 2.保存现场 3.cpu进入异常工作模式,程序指针(pc)跳入异常入口&…

c++builder提高批量动态创建panel的速度_骑行时影响速度的事项有哪些 怎样有效提高骑行速度 单车租赁信息...

撇开人的因素在自行车的组件中对车速影响最大的几项是什么?车重?自锁?轮组?传动?我的个人感受,从提高幅度上来讲,而不是重要性上来讲一、自锁起码提高你50%的速度,我不用自锁和别人一起走AVS25就很辛苦了,用了自锁&#xff0…

ansys matlab 调用,matlab 调用ansys (转载)

问题的提出:我们经常会需要用ansys计算一些东西,之后再用matlab来处理计算的结果。当修改某些参数重复上述过程的时候,就比较容易出现问题——比如ansys模型中的参数和matlab程序中参数的一致性问题等。这时可以考虑采用下面的协同工作的方法…

本地存储之sessionStorage

源码可以到GitHub上下载! sessionStorage: 关闭浏览器再打开将不保存数据 复制标签页会连同sessionStorage数据一同复制 复制链接地址打开网页不会复制seessionStorage内的数据 清除缓存加载当前页对页面无影响 1) 同源策略限制。若想在不同页面之间对同…

哈希三道题

两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意…

zemax光学设计超级学习手册_穿越十年的一个ZEMAX光学设计案例

目前超过两千人的光学与光学设计方面的微信公众号,欢迎您!穿越十年的一个ZEMAX光学设计案例作者:窗台小绿萝CAD,这个词已经深入到学习、工作很多年,翻译过来就是Computer Aided Design,计算机辅助设计。随着…

Java本质和性能

最初的问题是如何计算二进制数中1的个数? 我包含了使用Integer.bitCount()的性能比较,该性能可以转换为固有特性,即单个机器代码指令POPCNT和执行相同功能的Java代码。 题 如何计算二进制数中1的个数? 假…

spring RequestMapping 包含http的部分以及各部分详解

RequestMapping有四个参数,分别为:1、value:表示请求URL2、method:表示请求方法3、params:表示请求参数4、headers:表示请求头 【例如】:RequestMapping(value"/testRequestMapping",…

【ZBH选讲·拍照】

【问题描述】 假设这是一个二次元。LYK召集了n个小伙伴一起来拍照。他们分别有自己的身高Hi和宽度Wi。为了放下这个照片并且每个小伙伴都完整的露出来,必须需要一个宽度为ΣWi,长度为max{Hi}的相框。(因为不能叠罗汉)。LYK为了节省…

php基础是什么,php基础学什么?

有不少同学想要学习 PHP,但又不清楚 PHP 基础学什么,那么这篇文章告诉你。熟悉前端开发语言学习 PHP 之前,首先要学习前端语言包括 HTML、CSS、JS 等。等对前端语言有个大致掌握后,能编写一个 web 静态页面。学习 PHP 基本语法和函…

名为 cursor_jinserted 的游标不存在_生鲜电商存在的问题及对策解析:未来生鲜电商如何发展?...

生鲜电商的特点有哪些?生鲜电商特点:1,生鲜电商具有粘性高、重复购买率高、毛利高的“三高”特性;2,生鲜食品需要保鲜、冷藏、冷冻;3,生鲜食品保质期比较短;保存不易、对物流配送的条件要求极高;4,生鲜商品…

遇到短信轰炸,别人换ip调你的短信接口怎么办

前端开发者很容易暴露自己的请求地址和参数,我们都知道,一个h5页面,按 F12 是可以看到页面的源码的,所以经常很多人会利用这一点恶意调取别人的接口。 我们公司出现了好多次短信接口被大量调用,导致一天发了几万条短信…

UVa 10170 - The Hotel with Infinite Rooms

题目:求从s開始的递增序列(每次加1)。求出他们加和不小于D的那个最后的加数。 分析:数学题。分治。s s1 ... n n*(n1)/2 - s*(s-1)/2 (ns)*(…

番石榴函数和Java 8 Lambdas

我最近阅读了Brian Goetz的《 Lambda的状况》 ,在阅读了该文章之后,我想尝试使用Java 8 Lambda表达式。 Brian在他的文章中继续描述了将一种方法称为“功能”接口的接口。 功能接口几乎总是用作匿名类,其中ActionListener是规范示例。 这些“…

linux rsync删文件速度,为什么用rsync删除大量文件的时候比用rm快

为什么用rsync删除大量文件的时候比用rm快今天研究怎么在Linux下快速删除大量文件,搜到很多人都说可以用rsync来删除大量文件,速度比rm要快很多,但是没有人说为什么,仔细研究了一下原因,总结起来大概就是,一…

关于源码,反码,补码(正数--负数)---------(-128)自己的理解

以一个字节为例 1、无符号位,一个字节可以存放0~255共256个数字;有符号位存放-128~127共256个数字; 2、无符号全都表示为正数;有符号位则首位表示正负数,正数首位为0,负数首位为1(因此在判断一个…