Python学习笔记(13)-Python类与对象示例
点此查看 零基础Python全栈文章目录及源码下载
本文目录
- 1. 简介
- 2. Python类的定义
- 3. Python类的动态语言特性
- 4. Python类中属性的访问控制
1. 简介
Python支持面向对象编程,所以Python可以很容易地用面向对象的观点来组织代码,实现业务逻辑处理。
Python是一种动态语言,所以它的面向对象机制的定义和使用都挺有意思,所以本篇主要内容:
- Python类的定义
- Python类的动态语言特性
- Python类中属性的访问控制
2. Python类的定义
举个栗子先:
class Car:#类名Carmadein="中国"#类属性def setCarInfo(self):#类方法self.name="解放牌汽车";#类的实例属性print(Car.madein)#通过类名直接访问类属性,输出:中国
car=Car()#初始化
print(car.madein)#通过对象访问类属性,输出:中国car.setCarInfo()#调用方法
print(car.name)##访问实例属性,输出解放牌汽车
具体解释下:
- 类定义关键字为class
- 类方法定义与普通方法定义的区别是第一个参数必须是self,self代表的是类的实例化对象
- 类的属性分为两种,类属性和实例化属性,类属性是类所有对象共有的一个属性,可以通过类或者对象访问。而实例属性每个对象都拥有一个。
- 实例属性需要借助方法来实现,在方法中有self.XXX=123。则表示定义了实例属性XXX。
3. Python类的动态语言特性
好的,到目前为止一切正常,但是看下面一个例子:
class Car:#类名Carmadein="中国"#类属性def setCarInfo(self):#类方法self.name="解放牌汽车";#类的实例属性
car=Car()
print(car.name)#报错信息:AttributeError: 'Car' object has no attribute 'name'
明明已经定义了类Car的实例属性self.name,但是为什么报错Car没有属性name呢。
这就要从Python语言的动态特性理解,Python语言不是预编译型的,也就是说Python自己都不知道类有什么属性,必须运行过了才知道!
如果先调用car.setCarInfo()
,在执行self.name="解放牌汽车"
时,此时类才有了实例对象self。所以要想给类定义实例属性,最好是在构造函数中定义,这样就能保证类一旦实例化出对象,该对象就具备了构造函数中的实例属性。如下代码中,因为在执行car=Car()时,调用了构造方法,所以执行了self.name=“解放牌汽车”,所以car.name这一实例属性已存在且被赋值。
class Car:#类名Carmadein="中国"#类属性def __init__(self):#构造方法self.name="解放牌汽车";#类的实例属性
car=Car()
print(car.name)#输出解放牌汽车
OK,到这还没完,Python是动态语言嘛,所以其实可以玩的很开,例如:
#类定义
class Car:#定义了类madein="中国"#定义了一个类的属性
#实例化
car1=Car()#实例化了一个对象print(car1.madein)#输出中国
car1.madein="非洲"#注意这是定义了一个实例属性,而类属性也是存在的
print(car1.madein)#输出非洲,因为先访问实例属性
print(Car.madein)#输出中国,类属性依然存在
4. Python类中属性的访问控制
Python也支持类的私有变量,也就是说类里面能访问的,类外面不允许访问。举个例子如下,在类属性名称前面添加__(两个下划线),该属性就成为私有变量,无法直接访问,但是可以通过类方法去访问(或设置)该私有变量的值。
class Car:#类def __init__(self):self.name="大众"#名字公开self.__price="10万"#价格保密def getPrice(self):return self.__price;
car=Car()#实例化了一个对象
print(car.getPrice())#输出10万
print(car.__price)#报错:AttributeError: 'Car' object has no attribute '__price'
从本篇来看,Python动态语言的本质暴露的十分明显啊。
Python学习笔记(13)-Python类与对象示例相关推荐
- python学习笔记:python类和对象,文件操作,网络编程
目录 一.python面向对象 1.类和对象的定义 2.单继承 3.多继承 4.成员属性 5.异常 6.@property 二.python文件操作 文件的打开和读写 文件对象接口汇总 三.pytho ...
- Python学习笔记《Python核心编程》第4章Python对象
所有的python对象都拥有三个特性:身份,类型和值 身份:每个对象都有一个唯一的身份标识自己,可以使用内建函数id()来得到,这个值被认为是该对象的内存地址:--只读 类型:对象的类型决定了该对象可 ...
- python学习笔记之——装饰器及对象
1.反射之__import__ 我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工 ...
- python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...
image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...
- 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI
Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...
- 『Python学习笔记』Python实现并发编程(补充joblibpymysql)
Python实现并发编程(补充joblib&pymysql) 文章目录 一. 并发编程知识点 1.1. 为什么引入并发编程 1.2. 如何选择多线程多进程多协程 1.2.1. 什么是CPU密集 ...
- Python学习笔记(一) Python基础
文章目录 1. 初始Python 1.1 Python安装 1.2 Python解释器 1.3 安装和配置PyCharm工具 2. 基础语法 2.1 注释 2.2 字面量 2.3 变量 2.4 标识符 ...
- Python学习笔记: Python 标准库概览二
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...
- python语言有哪两个系列_(转)Python学习笔记系列——Python是一种纯粹的语言
在摸索适合自己的语言学习方法,看到一篇好文章,转之,侵删. Python的语法范式相当多.知识点相当细,但是Python是一种内在一致性很好的语言,理解了几条基本的规则,就很容易理解大部分语法与现象. ...
最新文章
- matlab 斐波那契数列Fibonacci Sequence
- Ubuntu下安装Node.js
- docker-machine为节点安装指定版本的docker-ce的思路
- python 制作高斯mask_Python3 练手项目: 抓取豆瓣陈情令评论,并制作词云图
- IE Firefox css 差别 [转]
- leetcode 1486. 数组异或操作(位运算)
- k8s核心技术-Pod(镜像的拉取_重启策略_资源限制)_---K8S_Google工作笔记0022
- mysql er图 linux_ER图设计
- 二分查找递归解法(java)
- MySql数据库快速入门与常用sql语句
- 计算机会议论文和sci,ei会议论文集算不算期刊_ieee会议论文集属于istp_会议论文集算发表么...
- XPI 文件安装方法
- XCVU9P收发卡设计资料原理图第612篇:基于XCVU9P的32路光纤PCIeX16收发卡
- 机器学习-朴素贝叶斯(高斯、多项式、伯努利)
- AD软件绘制stm32最小系统电路原理图与PCB图
- 简体中文旗舰版Windows7SP1
- 打印服务器通常不采用tcp ip协议,TCP/IP 卷Ⅰ协议-绪论
- Linux桌面系统x11原理简介
- Duplicate Pair
- 《卷积网络》深度卷积网络实例
热门文章
- 三国麻将攻城的java_Java 攻城狮学习线路图
- 7-16 验证“哥德巴赫猜想” (20 分)
- java语言实现诗词竖版排列及给诗词加边框
- 实用盘点:10款高效办公软件,月薪2K变2W
- (1-4)sklearn库的----模型评估
- 《国际学术论文写作与发表》参考答案
- linux内存水印,Linux批量打水印
- struts2 checkboxlist标签的使用
- Linux Kernel - Debug Guide (Linux内核调试指南 )
- java写的酷炫项目_基于RxJava实现酷炫启动页