Python面向对象程序设计之类和对象、实例变量、类变量用法分析
作者:随风行云 发布时间:2021-05-08 01:34:56
本文实例讲述了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.变量名”.
附:
什么是新式类:https://www.jb51.net/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为了简洁性,不会复制一份类的数据给每一个对象,每一个对象之后存有其特有的属性,当其需要使用属性或方法时,先看自己有没有,如果没有再去类中找
类变量的创建:
可以在声明类的时候定义
也可以使用赋值来定义:
实例变量的创建:
可以在__init__中定义
也可以使用赋值来定义:
希望本文所述对大家Python程序设计有所帮助。
来源:https://www.cnblogs.com/progor/p/8419345.html


猜你喜欢
- 前言props指父组件往子组件中传入参数,我们来介绍下如何理解vue3的props的原理介绍了解其原理之前我们要清楚vue的虚拟节点是什么,
- 最近真的喜欢上了用xheditor这个在线编辑器,但是美中不足的是我发现它暂时还不能取代FCKeditor,因为没有在线上传功能啊!当然,F
- 1. 引言山脊图一般由垂直堆叠的折线图组成,这些折线图中的折线区域间彼此重叠,此外它们还共享相同的x轴.山脊图经常以一种相对不常见且非常适合
- 不好意思,标题比较啰嗦,因为这次的流水账确实属于一个比较细节的小东西,下面详细讲:1需求最近在使用electron-vue 开发一个跨平台的
- 前提条件:需要安装easy-install模块,这是一个python的模块打包工具。首先下载easy_setup.py的源代码,下载地址:
- 在网上游荡,看着别人的精彩主页难免心里痒痒的,但自己精心布置的家(个人主页),如果在不同的浏览器中呈现
- 00 前言什么是ImageMagick?ImageMagick是一个功能强大的开源图形处理软件,可以用来读、写和处理超过90种的图片文件,包
- 很实用的过滤重复数据的asp代码,函数如下:<%'**************************************
- 一、pip简介Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。Pip 是对easy_instal
- 大家好,我是辣条。辣条的一个朋友最近跟我诉苦:女朋友沉迷淘宝抢购无法自拔,大晚上不睡觉都在定时抢购,真是败家。都是好朋友辣条肯定帮忙,不就是
- 首先先发一下我的项目路径1. 首先要下载 sass-resources-loadernpm install sass
- 痛点引出在平时的开发当中,渲染侧边栏导航菜单有时会遇到过需要侧边栏有多层甚至无限层级的问题。此时更优雅的方式便是使用递归组件<el-m
- 感想我们在做深度学习处理图片的时候,如果是自己制作或者收集的数据集,不可避免的要对数据集进行处理,然后大多数模型都只支持RGB格式的图片,这
- 不通过数据源名DSN也能访问Access数据库吗?代码如下:<% dim conn &nbs
- Vue 的用法没有变化:<template lang="pug"> transition(name=&quo
- 问题出现在当时后台数据会返回到data中但是没有出现下拉菜单,查询资料 发现 Vue的this理解有误jsp 下拉菜单 <select
- 内容摘要:本文介绍了通过获取访问者的IP地址来统计在线人数的方法,本文只是给出了实现统计在线人数的方法思路,具体代码的实现过程还得自己动手(
- IIS报错:msxml3.dll (0x80070005)拒绝访问解决办法:Set objSrvHTTP =
- 代码很简单,只是给大家一个思路的,这里就不多废话了,奉上源码:<!DOCTYPE html><html><he
- 本文实例为大家分享了python实现贪吃蛇双人大战的具体代码,供大家参考,具体内容如下晚上家里小朋友要玩贪吃蛇游戏,还要跟我对战,一时半会我