面向对象基本介绍

Python编程方式:

  1. 面向过程编程
  2. 面向函数编程
  3. 面向对象编程

名称定义:

  1. 如果函数没有在类中称之为函数
  2. 如果函数在类中称之为方法

创建类

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
# 创建一个类,类名是Class_basis
class Class_basis:# 在类里面创建了一个方法ret,类里面的方法必须加一个self关键字def ret(self):# 当调用方法的时候输出retprint("ret")

使用类

# 通过Class_basis类创建一个对象obj(创建一个Class_basis实例),类名后面加括号
obj = Class_basis()# 通过对象调用类中的ret方法
obj.ret()

类的内存地址对应关系

面向对象之self

#!/usr/bin/env python
# _*_ coding:utf-8 _*_# 创建一个类,类名是Class_basis
class Class_basis:# 在类里面创建了一个方法retdef ret(self,):# 输出self的内存地址print("方法ret的self内存地址", id(self))# 创建一个对象obj,类名后面加括号
obj = Class_basis()# 输出对象obj的内存地址
print("obj对象内存地址", id(obj))# 通过对象调用类中的ret方法
obj.ret()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
obj对象内存地址 2420760156536
方法ret的self内存地址 2420760156536Process finished with exit code 0

通过上面的测试可以很清楚的看到obj对象和类的方法中self内存地址是一样的,那么方法中的self就等于obj

如图

self是形式参数,有Python自行传递。

面向对象之封装

封装就是将内容封装到某个地方,以后再去调用被封装在某处的内容,在使用面向对象的封装特性时,需要:

  1. 将内容封装到某处
  2. 从某处调用被封装的内容
class Foo:def ret(self):# 输出backend变量的内容print(self.backend)obj = Foo()
# 在对象中创建一个backend变量
obj.backend = "as"
obj.ret()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
asProcess finished with exit code 0

上面的封装是一种非主流的封装方式,下面的__init__构造方法封装方式是主流的封装方式。

class Foo:# 进入类的时候首先执行__init__方法def __init__(self, name):"""__init__称之为构造方法:param name: Foo传递过来的参数"""# 在类中创建一个成员Name,它的值是传过来的形参nameself.Name = name# 类的方法def user(self):# 输出Name的值print(self.Name)# 创建对象,并且将"Ansheng"封装到对象中,类+括号的时候会自动执行__init__方法
obj = Foo("Ansheng")# 执行user方法
obj.user()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
AnshengProcess finished with exit code 0

del 解释器销毁对象时候自动调用,特殊的名:析构方法

封装的应用场景之一就是当同一类型的方法具有相同参数时,直接封装到对象即可。

实例

通过用户输入年龄和姓名输出用户的个人信息

#!/usr/bin/env python
# _*_ coding:utf-8 _*_class Foo:def __init__(self, name, age):self.Name = nameself.Age = agedef info(self):print("""My name is: %sMy age is: %d""" % (self.Name, self.Age))ansheng = Foo("Ansheng", 18)
ansheng.info()xiaoming = Foo("xiaoming", 30)
xiaoming.info()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.pyMy name is: AnshengMy age is: 18My name is: xiaomingMy age is: 30Process finished with exit code 0

封装的应用场景之二就是把类当作模块,创建多个对象(对象内封装的数据可以不一样)

面向对象之继承基础

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

实例

创建一个信息相关的类,比如说人拥有四肢头发耳朵等信息,在创建一个中国人和外国人的类,中国人的语言是中文,皮肤是黄色,外国人的语言是英文,皮肤是黑色。

#!/usr/bin/env python
# _*_ coding:utf-8 _*_class People:def __init__(self):print("""你的通用特征有:四肢、头发、眼、耳朵""")class China(People):def info(self):print("""你是中国人,你的语言是中文,皮肤是黄色""")class Us(People):def info(self):print("""你是美国人,你的语言是英文,皮肤是黑色""")c = China()
c.info()m = Us()
m.info()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py你的通用特征有:四肢、头发、眼、耳朵你是中国人,你的语言是中文,皮肤是黄色你的通用特征有:四肢、头发、眼、耳朵你是美国人,你的语言是英文,皮肤是黑色Process finished with exit code 0

People –> 父类 or 基类

China and Us –> 子类 or 派生类

  1. 派生类可以集成基类中所有的功能
  2. 派生类和积累同时存在,优先找派生类
  3. Python类可以同时继承多个类

面向对象之继承之多继承(新式类)

多继承就是在class My(China, Us):括号内放入多个父类名。

多继承顺序

My(China, Us)时,因为My类中有info这个方法,所以输出的结果是我就是我

#!/usr/bin/env python
# _*_ coding:utf-8 _*_class China:def info(self):print("你是中国人")class Us:def info(self):print("你是美国人")class My(China, Us):def info(self):print("我就是我")c = My()
c.info()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
我就是我Process finished with exit code 0

My(China, Us)时,My类中没有info这个方法,输出的结果是你是中国人,默认括号内左边的类优先

#!/usr/bin/env python
# _*_ coding:utf-8 _*_class China:def info(self):print("你是中国人")class Us:def info(self):print("你是美国人")class My(China, Us):passc = My()
c.info()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
你是中国人Process finished with exit code 0

My(China, Us)时,My类中没有info这个方法,China类中也没有info这个方法,输出的结果是你是美国人

#!/usr/bin/env python
# _*_ coding:utf-8 _*_class China:passclass Us:def info(self):print("你是美国人")class My(China, Us):passc = My()
c.info()

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Week06/Day02/class_01.py
你是美国人Process finished with exit code 0

面向对象之继承之多继承时的查找顺序

  • 顶层两个类没有父类的情况

  • 顶层两个类有父类的情况

如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

Python全栈之路系列之面向对象基础相关推荐

  1. Python全栈之路系列之数字数据类型

    上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢深入. Py ...

  2. Python全栈之路系列----之-----内置函数和匿名函数lamdba

    引子 什么是内置函数? 内置函数就是python 提供给我们直接拿来就可以用的函数   内置函数--内置命名空间   只管调用 不管实现 总共68个 def func(): == #这是自己定义的函数 ...

  3. Python全栈之路系列之基础篇

    Python的诞生 Python是著名的"龟叔"Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语 ...

  4. 4Python全栈之路系列之Django模型

    Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...

  5. 2Python全栈之路系列之基于socket实现聊天机器人

    Python全栈之路系列之基于socket实现聊天机器人 通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding ...

  6. 1Python全栈之路系列Web框架介绍

    Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理, ...

  7. 2Python全栈之路系列之MysQl基本数据类型

    Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类: 数字类型 日期和时间类型 字符串类型 数字类 ...

  8. 1Python全栈之路系列之MySQL数据库基本操作

    Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司 ...

  9. 5Python全栈之路系列之字符串格式化

    Python全栈之路系列之字符串格式化 This PEP proposes a new system for built-in string formatting operations, intend ...

最新文章

  1. 如何计算两个文档的相似度(一)
  2. Harbor仓库的管理
  3. Java监听器的用法(一):内部类监听器
  4. 简述 Python 的 Numpy、SciPy、Pandas、Matplotlib 的区别
  5. Golang实践录:命令行cobra库实例再三优化
  6. DataTables之TableTools插件
  7. 黑苹果alc269声卡仿冒id_ALC269声卡仿冒驱动的制作问题,请紫米、威廉等高手指导一下。...
  8. window.dialogArguments只兼容ie的问题解决
  9. matlab生成音阶,MATLAB 数字电子琴的功能 电子琴的每个音阶均对应一个特定频率的信号 联合开发网 - pudn.com...
  10. fowin自动交易和量化交易和合约交易
  11. 解决margin塌陷问题
  12. MyBatis和MyBatis-plus教程
  13. HTTPS – 证书签发申请(CSR) - qikegu.com
  14. pmml(模型标准化)
  15. 基于单例模式的多键值序列号生成器实现(支持缓存)
  16. 建筑行业股权激励方案
  17. c语言程序小灯从右向左闪烁,单片机控制LED灯点亮(C语言).PPT
  18. python银行自动取款机系统详写
  19. 非标准化疾病诉求的简单分诊方案总结
  20. 2022个人所得税退税今日开始超过6万不足12万退税吗?退多少?

热门文章

  1. HTML滚动条样式代码及使用技巧
  2. angry Birds 学习札记
  3. HDU 5570 balls
  4. LINUX恢复误删除文件的两种方法(部分成功)
  5. Fragment是什么,怎么用?
  6. 怎样管理你的上级领导
  7. Ubuntu20.04配置静态固定IP地址
  8. Java将多个文件打成一个压缩包
  9. SQL窗口函数-MySQL-leetcode刷数据库题目必备知识
  10. 戴尔服务器装新硬盘模式,DELL服务器安装过程中的三种模式AHCI, ATA, RAID