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服务器与android客户端socket通信实例
Nov 12 Python
Python实现的数据结构与算法之队列详解
Apr 22 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python 的字典(Dict)是如何存储的
Jul 05 Python
python 轮询执行某函数的2种方式
May 03 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
Pytorch 图像变换函数集合小结
Feb 01 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小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
Python读写及备份oracle数据库操作示例
2018/05/17 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
Python处理PDF与CDF实例
2020/02/26 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
心得体会范文
2014/01/04 职场文书
租房协议书
2014/04/10 职场文书
团委竞选演讲稿
2014/04/24 职场文书
行政监察建议书
2014/05/19 职场文书
个人授权委托书格式
2014/08/30 职场文书
小学老师对学生的评语
2014/12/29 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书