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批量修改文件后缀示例代码分享
Dec 24 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
在Python的web框架中配置app的教程
Apr 30 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
讲解Python中if语句的嵌套用法
May 14 Python
使用python实现BLAST
Feb 12 Python
Pandas 缺失数据处理的实现
Nov 04 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
详解pycharm配置python解释器的问题
Oct 15 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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 无限极分类
2008/03/27 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
python比较两个列表是否相等的方法
2015/07/28 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
中学生在校期间的自我评价分享
2013/11/13 职场文书
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
初中班主任评语大全
2014/04/24 职场文书
卫生系统先进事迹
2014/05/13 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
客户付款通知书
2015/04/23 职场文书
入党积极分子考察意见
2015/06/02 职场文书
团结主题班会
2015/08/13 职场文书
600字作文之感受大自然
2019/11/27 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技