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调用windows api锁定计算机示例
Apr 17 Python
Python2.7简单连接与操作MySQL的方法
Apr 27 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
Python openpyxl 插入折线图实例
Apr 17 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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
php xml-rpc远程调用
2008/12/19 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
一段批量给页面上的控件赋值js
2010/06/19 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
python的socket编程入门
2018/01/29 Python
Numpy数组的保存与读取方法
2018/04/04 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
银行个人求职自荐信范文
2013/12/16 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
个人合伙协议书范本
2014/10/14 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
阿甘正传观后感
2015/06/01 职场文书
认识实习感想
2015/08/10 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书