Python快速入门学习笔记:第五天

python从入门到精通第三版,python入门到精通pdf微盘 大家好,本文将围绕python3.8从入门到精通pdf百度云下载展开说明,python入门到精通pdf百度云是一个很多人都想弄明白的事情,想搞清楚python从入门到精通第三版需要先了解以下几个事情。大家好,本文将围绕python3.8从入门到精通pdf百度云下载展开说明,python从入门到精通电子书下载是一个很多人都想弄明白的事情,想搞清楚python从入门到精通pdf免费下载需要先了解以下几个事情。 阅读详情

这个是为准备考研复试,希望做一个textCNN文本情感分析打语言基础的自学笔记,博主本身本科非计算机专业,如果网友们有幸看见本文,博客中内容如有疏漏,不吝赐教。

第7节 面向对象

7.1 继承

  继承作为实现代码复用的重要手段,一个新的类能够继承父类已经具有的特征就可以大大降低工作量。在Python中,提供了继承的语法格式:

class sub_name(super_name01[, super_name02,...,]):

如果在类中并没有明确指出一个类的父类,那么这个类的默认父类是object类。另外,在定义子类的时候,逻辑上必须在其构造函数中调用父类的构造函数。(虽然语法没有问题)

class Car:

    model = 0

    def __init__(self, make, year):
        self.make = make
        self.year = year

    def get_name(self):
        name = self.make + " " + str(self.year) + " " + str(self.model)
        return name.title()

    def print_odometer(self):
        print("This car has {0}".format(self.model))

    def update_odometer(self, mile):
        if mile >= self.model:
            self.model = mile
            print("This car has {0}".format(self.model))
        else:
            print("This car has " + self.model + " " + "now")


class ElectricCar(Car):
    def __init__(self, make, year):
        super().__init__(make, year)        # 或写成Car().__init__(make, year)


my_car = ElectricCar("BMW", 2020)
print(my_car.get_name())
my_car.print_odometer()
my_car.update_odometer(22000)

"""
输出结果:
Bmw 2020 0
This car has 0
This car has 22000
"""

在子类继承父类之后,子类可以继承父类除了构造方法之外的所有成员。但是,有时候会需要将父类中的某个方法的功能进行略微调整并在某个子类中体现出来,就需要用到方法的重写。

class ElectricCar(Car):
    def __init__(self, make, year):
        super().__init__(make, year)        # 或写成Car().__init__(make, year)

    def print_odometer(self):# 在子类中重写了父类的同名方法
        print("Override!")
"""
输出结果:
Bmw 2020 0
Override!
This car has 22000
"""

Python除了可以继承一个父类,还可以继承多个父类,如:

class A:
    def printA(self):
        print("A")
    def same(self):
        print("Same_A")
class B:
    def printB(self):
        print("B")

class C(A, B):
    def printC(self):
        print("C")


c = C()
c.printA()
c.printB()
c.printC()
c.same()
print(C.mro())

输出结果:
A
B
C
Same_A
[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]

多重继承可能遇到的问题就是,在多个父类中有同名的方法,那么此时子类需要按照继承的先后顺序来调用方法,另外我们也可以通过mro()方法来查看这个继承关系。

除了方法的重写,运算符也可以进行重载,这里有个表:
在这里插入图片描述
在这里插入图片描述

7.2 多态

  多态是当然同一个方法调用不同对象可能产生不同的行为,需要注意的是多态是方法的多态,属性没有多态;多态存在的两个必要条件就是:继承和重写

class Man:
    def eat(self):
        print("Eating...")

class Chinese(Man):
    def eat(self):
        print("Eating with chopsticks")

class English(Man):
    def eat(self):
        print("Eating with folk")

class Indian(Man):
    def eat(self):
        print("No tool")

def manEat(m):
    if isinstance(m, Man):
        m.eat() # 一个方法调用,根据对象不同显示不同结果
    else:
        print("Error")

manEat(Chinese())
manEat(English())
manEat(Indian())

"""
输出结果:
Eating with chopsticks
Eating with folk
No tool
"""

7.3 对象的浅拷贝和深拷贝

  变量的赋值操作只是形成了两个变量,但是还是指向同一个对象。Python当中的拷贝,一般是浅拷贝。拷贝时对象包含的子对象内容不拷贝,源对象和拷贝对象都会引用同一个子对象。而深拷贝使用了copy模块中的deepcopy函数,递归地去拷贝对象汇总包含的子对象。

# 变量赋值
class PersonalComputer:
    def __init__(self, cpu, screen):
        self.cpu = cpu
        self.screen = screen

class CPU:
    def calculate(self):
        print("CPU对象", self)

class Screen:
    def show(self):
        print("Screen对象", self)
# 变量赋值
m1 = PersonalComputer("R7 2700","AOC")
m2 = m1
print(m1)
print(m2)
"""
<__main__.PersonalComputer object at 0x000001EAAA4CD4F0>
<__main__.PersonalComputer object at 0x000001EAAA4CD4F0>
"""
# 浅复制与深复制
import copy
class MobilePhone:
    def __init__(self, cpu, screen):
        self.cpu = cpu
        self.screen = screen
class CPU:
    def calculate(self):
        print("CPU对象", self)
class Screen:
    def show(self):
        print("Screen对象", self)

# 变量赋值
c1 = CPU()
c2 = c1
print(c1)
print(c2)

#浅复制
s1 = Screen()
m1 = MobilePhone(c1, s1)
m2 = copy.copy(m1)
print(m1)
print(m2)

#深复制
m3 = copy.deepcopy(m1)
print(m1,m1.cpu,m1.screen)
print(m3,m3.cpu,m3.screen)

"""
<__main__.CPU object at 0x000001A8D8509760>
<__main__.CPU object at 0x000001A8D8509760>
<__main__.MobilePhone object at 0x000001A8D8509700>
<__main__.MobilePhone object at 0x000001A8D8562070>
<__main__.MobilePhone object at 0x000001A8D8509700> <__main__.CPU object at 0x000001A8D8509760> <__main__.Screen object at 0x000001A8D8509220>
<__main__.MobilePhone object at 0x000001A8D85D6640> <__main__.CPU object at 0x000001A8D860D520> <__main__.Screen object at 0x000001A8D860D5B0>
"""

7.3 组合

  组合可以体现类的整体与局部的关系,如:手机(手机屏,手机按键,接线口),人(手,脚,头)这样的关系。相比于继承,组合也是一个类似于继承的面向对象方法的体现。总之:继承是共性与个性的问题,组合是整体与局部的问题。

class Person:
    def __init__(self,head,foot):
        self.head = head
        self.foot = foot

class headcls:
    def think(self):
        print("Thinking")
class footcls:
    def run(self):
        print("Running")


h = headcls()
f = footcls()
p = Person(h, f)

p.head.think()
p.foot.run()

"""
Thinking
Running
"""
python从入门到精通第三版,python3.8从入门到精通pdf 大家好,本文将围绕python3.8从入门到精通pdf百度云下载展开说明,python从入门到精通电子书下载是一个很多人都想弄明白的事情,想搞清楚python从入门到精通pdf免费下载需要先了解以下几个事情。熟悉Python的都知道,Python书籍中有著名的三剑客,即Python编程三剑客”:《Python编程:从入门到实践》+《Python编程快速上手-让繁琐工作自动化》+《Python极客项目编程-完整版》。这三个书被称为Python三剑客。 阅读详情

相关推荐

华为星闪SLE实战:手把手教你用HarmonyOS开发智能家居控制应用(附完整代码)

本文详细介绍了如何利用华为星闪SLE技术,结合HarmonyOS开发智能家居控制应用。通过对比传统无线技术,阐述了星闪SLE在低时延、高可靠性和高并发方面的优势,并提供了从环境搭建、设备发现、连接管理到核心控制代码的完整实战教程,帮助开发者快速上手这一无线短距通信技术。

bert9linguist的博客 506

Python基础语法07--面向对象

五、字符串

nikeylee的博客 1633

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 492

leetcode: Exception: Type <class '__main__.ListNode'>: Not implemented

问题解决方案在leetcode讨论组里面看到了同样的问题: 解决方案如下: 即:系统已经为你定义了 ListNode 类,所以要记得把该类的定义部分注释掉。 最终解决于是我把 ListNode 类定义部分注释掉,看到了AC:

JNing 4352

基于 Python 的 LIF 模型:探索神经元同步与小世界网络

首先,我们定义了一个LIFNeuronself.soma.L = self.soma.diam = 12.6157 # 固定神经元形状self.cm = cm # 电容self.V_rest = V_rest # 静息电位self.V = V_rest # 初始化膜电位在初始化过程中,每个神经元被赋予初始的静息电位,并且其膜电位会在后续的模拟过程中动态变化。

qq_36224726的博客 1424

手把手教你用Cadence仿真12bit SAR ADC:从电路图到FFT频谱分析(含Simc 18mmrf工艺文件)

本文详细介绍了使用Cadence仿真12bit SAR ADC的全流程,包括电路搭建、仿真环境配置、瞬态仿真优化及FFT频谱分析。基于Simc 18mmrf工艺文件,提供从电路图到性能验证的实战指南,特别分享工程实践中的排错技巧和优化策略,帮助工程师高效完成ADC设计验证。

weixin_30832405的博客 405

Python开发【第六篇】: 面向对象

内容概要 面向对象和面向过程 面向对象三大特征 面向对象的成员 类与类之间的关系 约束 type、issubclass、isinstance self、super、MRO 1. 面向对象和面向过程 01. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤,即, 先先什么, 后干什么. 基于该思想编写程序就好比在编写一...

weixin_34391445的博客 286

【CASS精品教程】032:CASS11台阶画法案例大全

一、普通无边台阶 二、普通有边台阶 三、普通圆弧无边台阶 四、U型台阶 五、曲线U型台阶 六、L型台阶

智慧空间实验室 7465

浅谈Python设计模式 - 适配器模式

  声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。   从本篇便开始介绍结构型设计模式,而适配器设计模式便是该类设计模式的一种,那么什么是结构型设计模式呢?  结构型设计模式:   其主要用来处理一个系统中不同实体(比如类和对象)之间关系,关注的是提供一种简单的对象组合方式来创造新的功能。  适配器模式   该书...

an999999的博客 212

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Qt | 开发过程中总结的经验

关于如何判断自己的Qt库是多少位,有个误区就是很多人要么看成了QtCreator的关于信息中列出的位数,要么以为自己是64位的系统就认为是64位的Qt,最终要在Qt构建套件中查看具体位数,大概从Qt5.14开始基本上很少提供32位的库,尤其是Qt6.0以后基本上默认就是只有64位的库了,这也是顺应时代潮流,毕竟不久的将来(个人预计2030年以前)基本上32位的系统占比不超过1%,放心大胆的用64位的库吧,抛弃烦人的32位以及XP系统。Qt常用类的头文件的函数看完学完使用一遍并加以融会贯通,月薪30K起步。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 491

面向对象 之 类

一 类的成员   首先什么是类的成员,很简单,你能在类中写什么?写的内容就是成员. class Foo: # 类名 # 方法 def __init__(self,参数1,参数2): # 属性变量 self.属性1 = 参数1 self.属性2 = 参数2 # 方法 def...

weixin_30872157的博客 162

【3天快速入门WPF】11-附加属性

创建一个静态类,用于定义附加属性。使用方法注册附加属性。提供Get和Set方法来获取和设置附加属性的值。通过以上步骤,我们可以在WPF中轻松实现和使用附加属性。附加属性的主要用途包括为控件添加自定义行为、控制布局信息(如Grid.Row和)以及实现动态样式。

Zy100Papa的博客 679

如何快速赚钱 Python爬虫

如何快速赚钱 Python爬虫

qq_43678748的博客 2170

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python七天快速入门——第一天

本教程直接从语言入手,旨在让没有编程基础以及具有一点程序基础的快速上手Python,

苦走一口田 2340

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Python】快速入门Python一天学完基础语法

快速入门python 1. 数据类型与变量:元组、字典、拆包等 2. 基础运算与控制流程 3. 方法/函数、异常处理 4. 面向对象

CoderSharry的博客 2349

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python爬虫如何快速入门

写了几篇网络爬虫的博文后,有网友留言问Python爬虫如何入门?今天就来了解一下什么是爬虫,如何快速的上手Python爬虫。

学而思(xiejava的blog) 2151

Python快速入门教材推荐!

Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内。 python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择。很多库已经不提供python2支持,请尽快从python迁移到python3.7。...

大数据hadoop开发学习 9963

Python快速入门PDF下载:快速掌握Python基础的不二选择

Python快速入门PDF下载:快速掌握Python基础的不二选择 去发现同类优质开源项目:https://gitcode.com/ 在编程语言的世界中,Python以其简洁的语法和强大的功能赢得了无数开发者的喜爱。今天,我们要推荐的这个开源项目——Python快速入门PDF下载,是帮助初学者快速掌握Python基础知识的绝佳资源。 项目介绍 Python快速入门PDF下载项目,为您提供了一本全面...

gitblog_06704的博客 521

Python快速入门学习笔记:第一天

这个是为考研复试要做textCNN文本情感分析打语言基础的自学笔记,博主本身本科非计算机专业,如果网友们有幸看见本文,播客中内容如有疏漏,不吝赐教。 第0节:从零开始   按照编译器翻译的两种方式:分为编译和解释。当编译器以解释方式运行的时候,也称之为解释器。Python也具解释性语言的优势,虽然效率不如编译性语言但跨平台能力。   Python所具有的特点:完全面向对象、强大的标准库、大量的...

PandaNotPan的博客 706

python快速编程入门笔记,《python编程快速上手》

人生苦短,我学python。python编程语言在各种榜单上经常拿到前列位置,在全球范围内都非常受欢迎python新手代码练习。Python作为一种不受局限、跨平台的开源编程语言,其数据处理速度快、功能强大且简单易学。而且,Python采用解释运行的方式,编写后无需进行编译即可直接通过解释器执行,具有典型的动态语言特点,编程效率极高。不仅如此,Python的应用范围也非常广泛,在数据分析、人工智能、网络爬虫、运维测试都多个领域都有应用。想要入门和深入学习python,以下书籍不容错过!

小发猫 475

Python七天快速入门——第五天

本教程直接从语言特性入手,旨在让没有编程基础的小白或者其他语言领域大佬快速上手Python,本文只介绍最基础内容,深入使用Python不在本教程范围😉

苦走一口田 782

Python学习笔记资源介绍:零基础入门教程,轻松掌握Python编程

Python学习笔记资源介绍:零基础入门教程,轻松掌握Python编程 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今信息时代,Python以其高效、简洁和易学的特点,成为广大编程爱好者的首选语言。今天,我们为您推荐的开源项目《Python学习笔记.pdf》正是一本专为编程新手量身定制的入门教程,帮助您从零开始,轻松掌握Python编程。 项目技术分析 《Pyt...

gitblog_06785的博客 471

Python快速入门

本文主要是对Python的一个快速入门,学习Python的基本语法。如果你当前并没有学习过Python的话,推荐可以花两小时通过这篇文章来一个快速入门

热爱编程、热爱生活、热爱探索 1964

python快速入门第三版-Python 快速入门:第3版 配套资源 PDF 完整版

给大家带来的一篇关于Python入门相关的电子文档资源,介绍了关于Python、快速入门方面的内容,本书是由Python官网出版,格式为PDF,资源大小23 MB,码小辫编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.5。内容介绍Python 快速入门(第3版)配套资源这是一本Python快速入门书,基于Python 3.6编写,分为4个部分,第一部分讲解Python的基础知识,对Pyt...

weixin_37988176的博客 1175
上一篇: Python快速入门学习笔记:第四天
下一篇: Python快速入门学习笔记:第六天
Panda不姓潘
博客等级 码龄8年 152粉丝 23原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值