Python面向对象程序设计之类和对象、实例变量、类变量用法分析


Posted in Python onMarch 23, 2020

本文实例讲述了Python面向对象程序设计之类和对象、实例变量、类变量用法。分享给大家供大家参考,具体如下:


类和对象:

  • 类的定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类的优势:将一个对象的功能集中于一体,便于操作,降低了代码的重复。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

使用 class 语句来创建一个新类:

class Dog:
  #self 代表的是类的实例,代表当前对象的地址
  def __init__(self,name):##称为类的构造函数,进行初始化成员变量
    self.name=name
  def bulk(self):###自定义函数
    print("%s:汪汪!"%self.name)

d1=Dog("奥巴马")##创建对象,传入__init__所需的变量,self默认自动传入

d1.bulk()#调用方法
print(d1)

为什么要有self:

以类变量和实例变量为解释,对于共有属性,一般会在共有部分定义,不需要__init__,而比如说因为人人都有自己的名字,那么名字应该是一个人私有的。而类的函数由于为了节约资源,并不会拷贝给每一个对象,每一个对象都要从类的定义区中调用方法,对于涉及对象特有属性的方法,调用方法的时候必须传入自身对象self才能使函数获得私有的数据,而调用这个私有的数据使用”self.变量名”.

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

附:

什么是新式类:https://3water.com/article/183280.htm


实例变量和类变量:

  • 实例变量是对于每个实例都独有的数据,而类变量是该类所有实例共享的数据
  • 变量使用的顺序是:实例变量--》类变量,如果实例变量中没有才会去类变量中找
  • 【但即使是类中的变量,也是需要使用self.变量名来使用】
class Dog:
  age=8
  def __init__(self,name):
    self.name=name
  def bulk(self):
    print("汪汪")

d1=Dog("包子")
d2=Dog("馒头")
d1.age=10
print("Dog:",Dog.age,"\tD1:",d1.age,"\tD2:",d2.age)


-------------------------
结果:
Dog: 8   D1: 10   D2: 8
  • 节约论:python为了简洁性,不会复制一份类的数据给每一个对象,每一个对象之后存有其特有的属性,当其需要使用属性或方法时,先看自己有没有,如果没有再去类中找

类变量的创建:

  • 可以在声明类的时候定义

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

  • 也可以使用赋值来定义:

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

Python面向对象程序设计之类和对象、实例变量、类变量用法分析


实例变量的创建:

  • 可以在__init__中定义

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

  • 也可以使用赋值来定义:

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

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

Python 相关文章推荐
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
Django自定义用户登录认证示例代码
Jun 30 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Python守护进程实现过程详解
Feb 10 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
python 镜像环境搭建总结
Sep 23 Python
Python3 shelve对象持久存储原理详解
Mar 23 #Python
python新式类和经典类的区别实例分析
Mar 23 #Python
Python count函数使用方法实例解析
Mar 23 #Python
使用python实现飞机大战游戏
Mar 23 #Python
如何在Django中使用聚合的实现示例
Mar 23 #Python
python3注册全局热键的实现
Mar 22 #Python
浅谈Python线程的同步互斥与死锁
Mar 22 #Python
You might like
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
深入了解js原型模式
2019/05/30 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python+微信接口实现运维报警
2016/08/27 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Django中信号signals的简单使用方法
2019/07/04 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
小学生十佳少年事迹材料
2014/08/20 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
高中生毕业评语
2014/12/30 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
MySql数据库触发器使用教程
2022/06/01 MySQL