Python 面向对象静态方法、类方法、属性方法知识点小结


Posted in Python onMarch 09, 2020

本文实例讲述了Python 面向对象静态方法、类方法、属性方法知识点。分享给大家供大家参考,具体如下:

(1)静态方法--》-@staticmethod装饰类中方法

只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性

class Dog(object):
  def __init__(self,name):
    self.name = name
  @staticmethod #实际上跟类没什么关系了
  def eat(self):
    print("%s is eating %s" %(self.name,'dd'))
  def talk(self):
    print("%s is talking"% self.name)
d = Dog("Td")
d.eat(d)

(2)类方法-----》  @classmethod装饰类中方法

只能访问类变量,不能访问实例变量

@classmethod
  def eat(self):
    print("%s is eating %s" %(self.name,'dd'))

(3)属性方法----》 @property #attribute装饰类中方法

把一个方法变成一个静态属性

@property #attribute
  def eat(self):
    print("%s is eating %s" %(self.name))
# 调用
Dog("TD").eat

1.需要将一个值传递给eat属性方法-----修改属性值?

存在的问题是变成属性了直接赋值是无法实现的,需要在重新相同的方法,同时将该方法加上@eat.setter进行装饰。

@property   #attribute
  def eat(self):
    print("%s is eating %s" %(self.name,self.__food))
  @eat.setter
  def eat(self,food):
    print("set to food:",food)
    Self.__food=food

2.删除属性---同名方法使用  @eat.deleter修饰

@property   #attribute
  def eat(self):
    print("%s is eating %s" %(self.name,self.__food))
  @eat.deleter
  def eat(self):
    del self.__food

总结:

1. 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法。

2. 类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量。

3. 属性方法的作用就是通过@property把一个方法变成一个静态属性,调用时与调用属性的方式相同。

   3.1 把一个方法变成静态属性的作用:

当某个属性的值是一系列动作后才得到的结果。所以每次调用时,其实它都要经过一系列的动作才返回结果的,但这些动作过程不需要用户关心,用户只关心得到这个属性的值即可,也就是说用户只需要调用这个属性就可以了。

   (1)修改属性值

  将由@proerty装饰器(把一个方法变成一个静态属性)使用@proerty.setter装饰器再装饰一下,此时 你需要写一个新方法(同名), 对这个属性值进行更改。

   (2)删除属性

   #1:将由@proerty装饰器(把一个方法变成一个静态属性)使用@proerty.deleter装饰器再装饰一下,此时 你需要写一个新方法(同名)。

   #2:使用del删除该实例所对应的属性方法(属性) 例如:del 对象.属性

源码学习地址:https://gitee.com/FelixBinCloud/PythonLearn/commit/bad7a51da107bec6b2b2db697318a6935847d208

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现的简单猜数字游戏
Apr 04 Python
Python正则表达式匹配HTML页面编码
Apr 08 Python
详解python发送各类邮件的主要方法
Dec 22 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
对python制作自己的数据集实例讲解
Dec 12 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
python设置表格边框的具体方法
Jul 17 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
python数字转对应中文的方法总结
Aug 02 Python
python微信公众号开发简单流程实现
Mar 09 #Python
Python 面向对象部分知识点小结
Mar 09 #Python
Django跨域资源共享问题(推荐)
Mar 09 #Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 #Python
Python模块相关知识点小结
Mar 09 #Python
Django操作session 的方法
Mar 09 #Python
Python装饰器用法与知识点小结
Mar 09 #Python
You might like
php5.2.0内存管理改进
2007/01/22 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
js模拟微博发布消息
2017/02/23 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python制作抖音代码舞
2019/04/07 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python缓存技术实现过程详解
2019/09/25 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Python文件操作方法详解
2020/02/09 Python
python实现快递价格查询系统
2020/03/03 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
科级干部考察材料
2014/02/15 职场文书
社区母亲节活动方案
2014/03/05 职场文书
青安岗事迹材料
2014/05/14 职场文书
2015年药店工作总结
2015/04/20 职场文书
地道战观后感500字
2015/06/04 职场文书
尊师重教主题班会
2015/08/14 职场文书