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用装饰器自动注册Tornado路由详解
Feb 14 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
Python3.5 创建文件的简单实例
Apr 26 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
numpy下的flatten()函数用法详解
May 27 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
使用Python的turtle模块画国旗
Sep 24 Python
Python实现随机生成任意数量车牌号
Jan 21 Python
django-csrf使用和禁用方式
Mar 13 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
Python try except else使用详解
Jan 12 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python文件读写常见用法总结
2019/02/22 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
python爬取抖音视频的实例分析
2021/01/19 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
市政工程技术专业自荐书
2014/07/06 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
《社戏》教学反思
2016/02/22 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
用python批量解压带密码的压缩包
2021/05/31 Python