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利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
Python使用django搭建web开发环境
Jun 09 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
Python单元测试简单示例
Jul 03 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
实现Python与STM32通信方式
Dec 18 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
python代码xml转txt实例
Mar 10 Python
如何解决pycharm调试报错的问题
Aug 06 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python的链表基础知识点
2020/09/13 Python
基于PyTorch中view的用法说明
2021/03/03 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
遗嘱继承公证书
2014/04/09 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
javascript对象3个属性特征
2021/11/17 Javascript
Java设计模式中的命令模式
2022/04/28 Java/Android