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生成器的使用方法
Nov 21 Python
讲解Python中的递归函数
Apr 27 Python
在Python程序中进行文件读取和写入操作的教程
Apr 28 Python
编写Python脚本来获取Google搜索结果的示例
May 04 Python
详解python字节码
Feb 07 Python
Python安装pycurl失败的解决方法
Oct 15 Python
Python模块的加载讲解
Jan 15 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
python获取系统内存占用信息的实例方法
Jul 17 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 zip文件解压类代码
2009/12/02 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
php四种定界符详解
2017/02/16 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python实现可逆简单的加密算法
2019/03/22 Python
python logging模块的使用总结
2019/07/09 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
计算机专业自我鉴定
2013/10/15 职场文书
感恩节活动方案
2014/01/27 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
检举信的写法
2019/04/10 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers