什么是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的chardet库获得文件编码并修改编码
Jan 22 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Django 跨域请求处理的示例代码
May 02 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
python如何实现代码检查
Jun 28 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
python生成requirements.txt的两种方法
Sep 18 Python
python 实现让字典的value 成为列表
Dec 16 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
python求一个字符串的所有排列的实现方法
Feb 04 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP计数器的实现代码
2013/06/08 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
python实现猜拳游戏项目
2020/11/30 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
自荐书格式
2013/12/01 职场文书
后勤工作职责
2013/12/22 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
酒店开业策划方案
2014/06/02 职场文书
体育课外活动总结
2014/07/08 职场文书
业务员辞职信范文
2015/03/02 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸