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 相关文章推荐
Python3使用requests发闪存的方法
May 11 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
Django框架实现的分页demo示例
May 25 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
Python中SQLite如何使用
May 27 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
基于python的matplotlib制作双Y轴图
Apr 20 Python
Python面向对象编程之类的概念
Nov 01 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
微信公众平台天气预报功能开发
2014/07/06 PHP
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
JS数据类型判断的几种常用方法
2020/07/07 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
python检测服务器是否正常
2014/02/16 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python创建学生管理系统
2019/11/22 Python
keras得到每层的系数方式
2020/06/15 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
罗技美国官网:Logitech美国
2020/01/22 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
毕业生个人求职的自我评价
2013/10/28 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
高校十八大报告感想
2014/01/27 职场文书
中式婚礼主持词
2014/03/13 职场文书
会计岗位说明书
2014/07/29 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
在职员工证明书
2014/09/19 职场文书
2014年工程师工作总结
2014/11/25 职场文书
参观邀请函范文
2015/02/02 职场文书
晚会开场白和结束语
2015/05/29 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers