Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析


Posted in Python onMarch 23, 2020

本文实例讲述了Python面向对象程序设计之静态方法、类方法、属性方法原理与用法。分享给大家供大家参考,具体如下:

前言:认为方法与函数同意义,由于这里使用method,所以称为方法


静态方法:

  • 使用@staticmethod来定义静态方法。
  • 静态方法:类和实例都可以调用的方法,实际上跟类没什么关系了,对于这种不太相关的就使用静态方法【用实例和类调用没有区别】
class Dog(object):
  def __init__(self,name):
    self.name=name
  def talk(self):
    print("%s is talking"%self.name)
  @staticmethod
  def eat(self,food):##
    print("%s is eating %s"%(self.name,food))

  @staticmethod
  def bulk(): ##如果不涉及实例变量的内容,可以不传self
    print("wang wang!")

d=Dog("haha")
d.talk()
Dog.eat(d,"baozi")
d.eat(d,"mianbao")
d.bulk()
Dog.bulk()

注:由于不太相关,所以不会自动传self,如果操作涉及对象的内容,需要手动传入

Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析


类方法:

  • 使用@classmethod来定义类方法
  • 类方法只能访问类变量,不能访问实例变量
  • 如果涉及类变量比较多,而涉及实例变量比较少的话,使用类方法
class Dog(object):
  name="haha"
  def __init__(self,name):
    self.name=name

  @classmethod
  def eat(self):
    print(self)# <class '__main__.Dog'> 说明self是一个类
    print("%s is eating "%self.name)#所以只会调用类中的name

d=Dog("aotuman")
d.eat()##haha is eating
Dog.eat()##haha is eating
d2=Dog("huluwa")
d2.eat()

注:类方法中的self是一个类,因此才会只访问类变量


属性方法:

  • @property会把一个方法变成一个属性
  • 为什么会有属性方法

现有需求:我输入因数,你就会打印出我要的计算结果

用变量来实现:

Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析

缺点:无法约束赋值,假如我要限制不能输入非数字【实际上,如果要做这样的约束,就要建立一个函数,这实际上与属性方法相同,而如果在my_sum里面检测的话,就比建立一个函数还要麻烦了】

用属性方法来实现:

Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析

  • 代码:

解释:

  • @property用于获取;@setter用于赋值传参;@deleter用于删除属性,并不影响其他与当前@property无关的函数
  • 要想他们三个关联起来,函数名必须相同,且前缀是@property修饰的函数的名

Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析

class calc:
  @property
  def my_sum(self):
    print(self.one+self.two)
  @my_sum.setter
  def my_sum(self,l):
    if isinstance(l[0],int)&isinstance(l[1],int):
      self.one=l[0]
      self.two=l[1]
    else:
      print("no int")
  @my_sum.deleter
  def my_sum(self):
    print("del done")
    del self.one,self.two
c=calc()
c.my_sum=[1,2]
c.my_sum
del c.my_sum

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python读取Json字典写入Excel表格的方法
Jan 03 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
Python 读写文件的操作代码
Sep 20 Python
使用python对excle和json互相转换的示例
Oct 23 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
python如何实现单链表的反转
Feb 10 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
python中的装饰器该如何使用
Jun 18 Python
Python3 pickle对象串行化代码实例解析
Mar 23 #Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 #Python
Python3 shelve对象持久存储原理详解
Mar 23 #Python
python新式类和经典类的区别实例分析
Mar 23 #Python
Python count函数使用方法实例解析
Mar 23 #Python
使用python实现飞机大战游戏
Mar 23 #Python
如何在Django中使用聚合的实现示例
Mar 23 #Python
You might like
PHP中对数据库操作的封装
2006/10/09 PHP
php生成略缩图代码
2012/07/16 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
arguments对象
2006/11/20 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
浅谈python中的占位符
2017/11/09 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
简单了解django orm中介模型
2019/07/30 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
python中的对数log函数表示及用法
2020/12/09 Python
厨房领班竞聘演讲稿
2014/04/23 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
合作经营协议书范本
2014/09/16 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书