【python学习】面向对象编程1

这篇具有很好参考价值的文章主要介绍了【python学习】面向对象编程1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编程思想

面向过程编程(思想)

流水线形式
优点:逻辑清晰
(逻辑一步一步的,是一个系统)
缺点:扩展性差
(上一个函数的输出是下一个函数的输入)

面向对象编程(思想)

对象是什么?
Python中一切皆对象

对象:就是特征和技能的结合体。

面向对象编程:定义初一个个鲜明独特的对象,然后通过对象之间的交互编程。

优点:扩展性非常强
缺点:逻辑非常复杂

类和对象

以选课系统为例
定义学生对象:

姓名:小明
学号:123456
学校:oldboy
技能:选课

姓名:小红
学号:123457
学校:oldboy
技能:选课

定义老师对象:

姓名:李老师
学校:oldboy
技能:教课

姓名:张老师
学校:oldboy
技能:教课

类:分类/类别

按照学生和老师可以划分两类,一个是学生类,一个是老师类

类的概念:一系列具有共同特征或技能的对象。

在现实世界中先有对象,再有类。
在Python中先有类,再有对象。

用Python定义一个类

定义类,会直接运行类体代码
class 类明(必须得用驼峰体):
定义一系列特征
定义一系列方法

实例化对象
对象 = 类名()

# 类的定义阶段,会运行代码
class OldBoyStudent:
	school = 'oldboy'
	
	# self是对象本身
	# __开头的方法会在某种情况自动调用
	# __init__在类实例化的时候自动调用
	def  __init__(self, name, age, gender):
		self.name = name
		self.age = age
		self.gender = gender
	
	# 函数定义阶段,只检测语法,不执行代码
	def choose_cource(self):
		print('is choosing cource')

# 双下划线开头的方法会在某种情况下自动触发
print(OldBoyStudent.__dict__)

# 实例化对象
stu1 = OldBoyStudent('jack','18','male')
print(stu1.school)
print(stu1.choose_cource())
 
stu2 = OldBoyStudent()
print(stu2.school)
print(stu2.choose_cource())

对象的属性查找顺序

先从对象本身查找,然后从类中查找,类也没有则报错。

类与数据类型

所有的数据类型都是类。

对象的高度整合

对象会有一大堆属性/数据,还会有一大推方法来适应操作这些属性,然后对于不同的对象,这些属性又不同。

类的继承

继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。
在Python当中,父类、子类(派生类),父类和子类只有在继承的时候才会产生。

class Parent_Foo:
    def __init__(self, first_name, money, car, house):
        self.first_name = first_name
        self.money = money
        self.car = car
        self.house = house
        
    def fine_wife(self):
        print(f'{self.first_name}先生找到妻子了')
	
    
# pf = Parent_Foo('jack', 5, 'tesla',  '1套')    
    
class Son_Foo(Parent_Foo):
	pass

sf = Son_Foo('jack', 1000, 'tesla',  '1套')
print(sf.first_name)
print(sf.money)
print(sf.car)
print(sf.house)
sf.fine_wife()

为什么要使用继承?
减少重复,所有的父亲都可以用这个类,隔离了复杂度。
不推荐使用继承,当继承多个的时候,功能与功能之间会混乱,顶过继承一个。
继承后查找顺序,先自己,再类,再父类,再父类的父类·······
继承就是为了使用父类的属性。

类的派生

添加新的属性,同时还继承父类的所有东西。
方法一:直接使用

类名.__init__()

方法二:使用继承的方法

supper().__init__()

派生:继承父类的属性同时增加新的属性,然后使用supper().init()

类的组合

组合:组合在一起。
把对象当作变量值来用,当作形参/实参/返回值。

菱形继承问题

在python3当中会默认继承object类;在python2当中不会默认继承object类,必须得手动添加。
新式类:只要继承了object类的就是新式类,python3当中所有的类都是新式类。
经典类:没有继承object类就是经典类,只有python2当中有经典类。
当继承为菱形继承的时候,经典类和新式类搜索某一个属性的顺序会不一样。
在新式类中,当遇到菱形继承时,会以广度优先查找。
在经典类中,当遇到菱形继承时,会以深度优先查找。

多态与多态性

多态:多种状态,只要大家能继承同一种东西A,这些东西就是A 的多态。
水:液态/固态/气态
不推荐使用文章来源地址https://www.toymoban.com/news/detail-814365.html

到了这里,关于【python学习】面向对象编程1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言面向对象编程

    注:安装教程 上一篇 1.1、简单实例 1.2、指针 1、Go语言中的面向对象最为直观,也无需支付额外的成本。如果要求对象必须以指针传递,这有时会是个额外成本,因为对象有时很小(比如4字节),用指针传递并不划算。 只有在你需要修改对象的时候,才必须用指针。它不是

    2024年02月06日
    浏览(56)
  • 【转载】R语言 面向对象编程

    转载自:R语言教程 面向对象的编程侧重于数据和对象,而不是程序。面向对象的模型有助于我们对现实生活中的对象进行建模。为了在数据科学领域出类拔萃,掌握面向对象的编程概念很重要。每个程序都有特殊类型的类。在本教程中,将重点讨论R语言中的S3和S4类、泛型函

    2024年01月20日
    浏览(117)
  • 【JAVA】面向对象的编程语言(继承篇)

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在之前的文章中,我们介绍过面向对象的编程语言,今天我们就来就进入到JAVA面对对象的编程世界,今天我们主要来介绍面向对象的编程范式中一个重要的概念——继承。 继承是java面向对象编程技术的一块基石,因为

    2024年02月09日
    浏览(45)
  • Rust编程语言入门之Rust的面向对象编程特性

    Rust 受到多种编程范式的影响,包括面向对象 面向对象通常包含以下特性:命名对象、封装、继承 “设计模式四人帮”在《设计模型》中给面向对象的定义: 面向对象的程序由对象组成 对象包装了数据和操作这些数据的过程,这些过程通常被称作方法或操作 基于此定义:

    2023年04月21日
    浏览(54)
  • 【跟小嘉学 Rust 编程】十七、面向对象语言特性

    【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学 Rust 编程】六、枚举

    2024年02月10日
    浏览(89)
  • 【Go 基础篇】走进Go语言的面向对象编程世界

    欢迎各位编程爱好者们!今天我们将进入Go语言的面向对象编程(OOP)世界,一窥这门语言如何运用OOP思想来组织和构建程序。无论你是初学者还是有一些经验的开发者,本文都将为你揭示Go语言中的OOP特性、方法和最佳实践。 面向对象编程是一种程序设计范式,它以对象为

    2024年02月10日
    浏览(54)
  • Python面向对象编程

    本文带领大家过一遍菜鸟学Python的面向对象的部分 类(Class):  用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通

    2023年04月27日
    浏览(46)
  • python 面向对象编程(2)

    前面我们介绍了 python 类和对象以及继承、私有权限,那么今天我们将来介绍 python面向对象 剩下的两大特性封装、多态,以及如何访问、修改类属性、类方法和静态方法的介绍。🚗🚗🚗 Python中的封装是一种面向对象编程的概念,它将数据和操作这些数据的方法封装到一个

    2024年02月16日
    浏览(56)
  • python 面向对象编程

    大家好,前面我们学习了 python 的基础用法,那么从今天开始,我们将学习 python 的面向对象编程,那么什么叫做面向对象的编程呢? 面向对象编程是一种编程范式,它将数据和操作数据的方法封装在对象中,并通过对象之间的交互来实现程序的设计和实现。 在面向对象编程

    2024年02月13日
    浏览(50)
  • Python系列之面向对象编程

    目录 一、面向对象编程 1.1 面向对象三大特征 1.2 什么是对象 二、类(class)和实例(instance) 2.1 类的构成 2.2 创建类 2.3 创建实例对象和访问属性 2.4 Python内置类属性 2.5 类属性与方法 三、类的继承 3.1 方法重写 四、多态 Python 系列文章学习记录: Python系列之Windows环境安装配置_开

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包