Python - 面向对象(一)入门篇
Python里面有一句话:万物皆是对象
如何面向对象编程
- 设计类
- 创建类实例对象
- 实例对象调用方法
创建对象
- 在内存中为对象分配空间
- 调用初始化方法 __init__ 为对象初始化
对象创建后,内存中就有一个对象的实例了

由此可见,一个类可以有很多个对象,每个对象都有属于自己的变量、方法;
- 创建出来的 对象 叫做 类 的 实例
- 创建对象的 行为 叫做 实例化
- 对象的属性 叫做 实例属性
- 对象调用的方法 叫做 实例方法
知识点
- 每个对象都有自己独立的内存空间,保存自己的属性
- 但是实例方法在内存中都只有一个,实例方法中的 self 就是实例对象的引用,当对象调用实例方法时,会默认把实例对象传给方法内部
如果不懂的话,看看下面代码的输出就知道啦; id() 是用于获取对象的内存地址
class person():
def __init__(self, name):
self.name = name
print(f"init-{self.name} ", id(self)) def test(self):
print(f"test-{self.name} ", id(self)) p1 = person("p1")
print("p1-", id(p1))
print("p1 fun-", id(p1.test())) print("") p2 = person("p2")
print("p2-", id(p2))
print("p2 fun-", id(p2.test())) print("调用方法对比:",id(p1.test()) == id(p2.test()))
执行结果
init-p1 1921848172840
p1- 1921848172840
test-p1 1921848172840
p1 fun- 140719454498016 init-p2 1921848175136
p2- 1921848175136
test-p2 1921848175136
p2 fun- 140719454498016
test-p1 1921848172840
test-p2 1921848175136
调用方法对比: True
类对象
- 声明了一个类,它就是一个类对象
- 程序运行时,在内存中就会创建一个类对象,有且只有一个哦
- 类对象也有自己的属性和方法,分别叫做:类属性、类方法

实例变量和类变量
实例属性=实例变量
类属性=类变量
class Person():
name = "cool guy" if __name__ == "__main__":
p = Person()
print(p.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
print(Person.name) # 打印类的name属性 p.name = "bad guy" # 给实例绑定name属性
p.age = 12 # 给实例绑定age属性 print(p.age) # 实例找到age直接打印
print(p.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
print(Person.name) # 仍然打印类的name属性
执行结果
cool guy
cool guy
12
bad guy
cool guy
注意点
- 在写代码时,要避免类属性和实例属性重名,否则实例变量会屏蔽掉类属性
- 给实例绑定新的实例属性时,会直接覆盖掉重名的类属性

类方法会在下一篇幅介绍哦!
Python - 面向对象(一)入门篇的更多相关文章
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)
Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...
- Python系列之入门篇——HDFS
Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...
- Python系列之入门篇——MYSQL
Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...
- 【转】python 面向对象(进阶篇)
[转]python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 ...
- 【转】Python 面向对象(初级篇)
[转]Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...
- python 面向对象(进阶篇)转载武沛齐
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- 【Python之路】特别篇--Python面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...
- Python 面向对象(初级篇)
51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后 ...
随机推荐
- 编辑距离算法-DP问题
Levenshtein Distance The Levenshtein distance is a string metric for measuring the difference betwee ...
- javasc-正则表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度 ...
- 台式机安装CentOS7.6 Minimal ISO系统并增加图形化桌面
需求:公司测试环境因业务原因,需要在台式电脑上安装带桌面的CentOS系统,因同事有一个7.6版本Minimal ISO镜像的安装U盘,为了图方便没有去下载everything ISO镜像,而是待同事 ...
- Vacant Seat(Atcoder-C-交互式题目)
C - Vacant Seat Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement This i ...
- 【年度开源、工具合集】牛津计划,DMTK,Graph Engine…提高你的工作效率!
本篇合集包括以下三个部分的内容: 1.微软亚洲研究院过去一年的所有开源合集,如分布式机器学习工具包DMTK等. 2.利用微软研究院的技术提高工作效率的工具合集,如让没有机器学习背景的开发人员也能开发出 ...
- github浏览器无法访问,并且idea无法push项目
github浏览器无法访问,并且idea无法push项目 原因:前一晚还能正常访问github,今天就无法提交项目了.前一步的操作为删库,然后改库.估计是因为dns出现了问题,具体问题不知道. 网上一 ...
- 后渗透阶段之基于MSF的路由转发
目录 反弹MSF类型的Shell 添加内网路由 MSF的跳板功能是MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的Meterpreter Shell的基础上添加一条去往“内网” ...
- 学习Vue.js-Day2
书接上文/思考反馈 react,ng,vue作用差不多,那各个都有什么特点啊,实际工作中应该用哪一个? 答:其实在实际工作中,组员会通过讨论而选择框架:这三个框架都能解放你的工作量,也适合做单页面应用 ...
- JS面试准备二
1.常用的字符串方法 1. indexOf:查找字符串某一项的初始位置2. slice:截取字符串(包含起始位置,不包含结束位置) 不会根据参数大小,交换参数位置 如果出现-1按倒数第一个数,如果出现 ...
- Django进行数据迁移时,报错:(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")
进行数据迁移时: 第一步: 命令:python manage.py makemigrations 在对应的应用里面的migrations文件夹中产生了一个0001_initial.py文件 第二步:执 ...