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中常见的数据类型小结
Aug 29 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
解读! Python在人工智能中的作用
Nov 14 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
详解Python3 pickle模块用法
Sep 16 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
python语言的优势是什么
Jun 17 Python
python 6行代码制作月历生成器
Sep 18 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 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和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python实现二叉搜索树
2016/02/03 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
单位委托书范本
2014/04/04 职场文书
陕西导游词
2015/02/04 职场文书
保送生自荐信
2015/03/06 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
学校就业保障协议书
2019/06/24 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers