什么是python类属性


Posted in Python onJune 10, 2020

首先我们来看一下属性的定义

属性的定义:python中的属性其实是普通方法的衍生。

操作类属性有三种方法:

1.使用@property装饰器操作类属性。

2.使用类或实例直接操作类属性(例如:obj.name,obj.age=18,del obj.age)

3.使用python内置函数操作属性。

属性存在的意义:

1、访问属性时可以制造出和访问字段完全相同的假象,属性由方法衍生而来,如果Python中没有属性,方法完全可以代替其功能。

2、定义属性可以动态获取某个属性值,属性值由属性对应的方式实现,应用更灵活。

3、可以制定自己的属性规则,用于防止他人随意修改属性值。

下面详细介绍三种操作类属性的方法:

1.使用@property装饰器操作类属性。

定义时,在普通方法的基础上添加@property装饰器;属性仅有一个self参数,调用时无需括号;

优点:

1) @property装饰器可以实现其他语言所拥有的getter,setter和deleter的功能(例如实现获取,设置,删除隐藏的属性)

2) 通过@property装饰器可以对属性的取值和赋值加以控制,提高代码的稳定性。

实例代码1:

#encoding=utf-8 
class Goods(): #新式类
 @property
 def price(self): #查看属性值 
 print ('@property ') 
 @price.setter #修改、设置属性 
 def price(self, value): 
 print ('@price.setter' ) 
 @price.deleter#删除属性
 def price(self): 
 print ('@price.deleter') 
 
obj = Goods(50) 
obj.price# 自动执行 @property 修饰的 price 方法,并获取方法的返回值 
obj.price = 2000 # 自动执行 @price.setter 修饰的 price 方法,并将2000赋值给方法的参数
del obj.price # 自动执行 @price.deleter 修饰的 price 方法 
结果输出:
@property
@price.setter
@price.deleter

实例代码2:通过@property装饰器对属性的取值和赋值加以控制

class Goods(object):
  def __init__(self):
    self.value=50
  @property
  def price(self): # 查看属性
    return self.value
 
  @price.setter # 添加或设置属性(属性名.setter)
  def price(self, value):
    if value >=50 and value<=100: #对属性的取值和赋值加以控制
      self.value=value
      print (self.value)
    else:
      print ("请输入一个50到100之间的数!")
 
  @price.deleter # 删除属性(属性名.deleter) 注意:属性一旦删除,就无法设置和获取
  def price(self):
    del self.value
    print ("price is deleted!")
 
obj = Goods()
print (obj.price)  # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price=106   # 自动执行 @price.setter 修饰的 price 方法,并将106 赋值给方法
del obj.price   # 自动执行 @price.deleter 修饰的 price 方法
结果输出:
50
请输入一个50到100之间的数!
price is deleted!

实例扩展:

class Dog(object): 
 
 name = 'dog' 
 
 def init(self): 
 
  self.age = 18
 
d1 = Dog()

d2 = Dog()

这里有两个实例 d1,d2 吧。

d1.name # 输出 dogd2.name # 输出 dogd1.name = 'abc'
d1.name # 输出 abcd2.name # 输出 dogDog.name # 输出 dog

原因是 d1.name 输出 dog 不是因为这个实例共享了类属性,而是因为这个实例没有 dog 属性,所以 python 查找了类属性。但是一旦你修改了 d1.name 相当于给 d1 实例绑定了 name 属性之后,d1.name 就与类属性无关了。既然这样就谈不上实例之间共享类属性了,因为只要一赋值,就相当于绑定了属性,则上述 d1.name 的含义和 d2.name 的含义就不同了,它们的值也不同,很明显它们的数据没有共享。

到此这篇关于什么是python类属性的文章就介绍到这了,更多相关python类属性是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python strip lstrip rstrip使用方法
Sep 06 Python
python回溯法实现数组全排列输出实例分析
Mar 17 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
python爬取网易云音乐评论
Nov 16 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
python 异步async库的使用说明
May 04 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
详解python polyscope库的安装和例程
Nov 13 Python
用python对oracle进行简单性能测试
Dec 05 Python
python的dict判断key是否存在的方法
Dec 09 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 #Python
浅谈Python中的模块
Jun 10 #Python
keras多显卡训练方式
Jun 10 #Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 #Python
keras 多gpu并行运行案例
Jun 10 #Python
Keras自定义IOU方式
Jun 10 #Python
Python实现在线批量美颜功能过程解析
Jun 10 #Python
You might like
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Python实现按中文排序的方法示例
2018/04/25 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
python openCV自制绘画板
2020/10/27 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
农业资源与环境专业自荐信范文
2013/12/30 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书