003集Class类应用实例—python基础入门实例

 

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

 示例1,代码如下

# Myfun类,但是这个类只有一个函数f()
class Myfun:  # class 后必须跟冒号:,下一行必须空4格i = 12345def f(self):  # 类方法必须包含参数self, 且为第一个参数,self代表的是类的实例,后加:return 'hello world'  # return必须再空四格然后写代码,或同时按键ctrl+alt+L
x = Myfun()
# 访问类的属性和方法
print(x.i)  # 类x + 物品名i
print(x.f())  # 类x + 人名f

 运行结果如下:

F:\software\pythonProject\venv\Scripts\python.exe F:\software\pythonProject\0104.py 
12345
hello world

进程已结束,退出代码为 0

类的构造方法__init__()
假如init()也是人,但是他是家族和外界联络员,当外界的人想调用自己家族的人,就必须要先告诉他,所以只要家族的人被调用,那么init()就会被先执行,然后由他去告诉那个被调用的人,执行被调用的。

示例2:

class Complex:def __init__(self, aa, bb):  # 必须要有一个self参数self.a = aa  # 空格有严格限制,否则报错self.b = bb
x = Complex(3.0, 4.5)  # 输出结果:3. -4.5
print(x.a, x.b)

输出结果:3.0 4.5

示例3:

class People:name = ''age = 0# 定义私有属性,私有属性在类外部无法直接进行访问__weight = 0def __str__(self):return self.__weight# 定义构造方法def __init__(self, n, a, w):  # self为实例化本身,类似于js的thisself.name = nself.age = aself.__weight = wdef speak(self):print("%s 说:我 %d 岁。" % (self.name, self.age))'''("%s 说:我 %d 岁。")此时的%s和%d均为参数,行参,需要在后面给他加上实参,需要加%比如("%a 前面为要传入的参数,后面这个是传入的实参"%(self.name ###此时就是实参))'''# 实例化
p = People('cassie', 10, 3)
p.speak()

结果为:cassie 说:我 10 岁。

 

示例4:

class People:name = ''age = 18sex = 'f'def __str__(self):  # 把名字直接展示出来,在直接print实例化对象时return self.namedef __init__(self, name):  # 接收参数self.name = name  # 修改上面的name属性的值# print('this is start')def like_apple(self):  # 需要调用此函数if self.sex == 'f':print('女性爱吃苹果')elif self.sex == 'n':print('男性不爱吃苹果')else:print('没有性别,无法判断')print(self.name, self.age,'岁')a = People('lucy')  # 实例化
a.like_apple()  # 调用自己写的函数
'''
输出结果为:
女性爱吃苹果
lucy 0
'''
print(a)   #因为上面写了__str__这个方法,所以在print时,直接返回了名字

 结果为:女性爱吃苹果
lucy 18 岁
lucy

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self, 且为第一个参数,self代表的是类的实例。

self:类的方法与普通的函数只有一个特别的区别——必须有一个额外的第一个参数名称, 按照惯例它的名称是self。
类的实例:是将类应用在实例场景之中,比如有个类里的函数是f,假如这个f具有print某一时刻的天气状况的能力,那么如果我需要这个f来print一下今天12点的天气,那么让他打印今天12点的天气这个动作,就是类的实例化,让类中的函数具有的能力变成真实的动作。

面向对象的三大特性是指:封装、继承和多态。

一、封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处

从某处调用被封装的内容

二、继承

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

    例如:

      猫可以:喵喵叫、吃、喝、拉、撒

      狗可以:汪汪叫、吃、喝、拉、撒

  • 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:

    上述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:

      动物:吃、喝、拉、撒

         猫:喵喵叫(猫继承动物的功能)

         狗:汪汪叫(狗继承动物的功能)

  • 三、多态 

     Pyhon不支持Java和C#这一类强类型语言中多态的写法,但是原生多态,其Python崇尚“鸭子类型”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/335876.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenFegin日志增强

OpenFeign配置日志增强功能 OpenFeign提供了日志打印功能,我们可以通过配置来调整日恙级别,从而了解Feign 中 Http请求的细节。 说白了就是对Feign接口的调用情况进行监控和输出 日志级别 NONE:默认的,不显示任何日志; BASIC&…

继承和多态的详解

文章目录 1. 继承1.1 继承的概念1.3 继承的语法1.3 父类成员访问1.3.1 子类中访问父类的成员变量1.3.2 子类中访问父类的成员方法 1.4 子类构造方法 2.super关键字2.1 super关键字的概念2.2 super和this的区别 3. 在继承中访问限定符的可见性4. 继承方式的分类5. 多态5.1 多态的…

ULINK2仿真器安装使用之工程设置

一、 ULINK2仿真器 ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器,是ULink仿真器的升级版本。ULINK2不仅具有ULINK仿真器的所有功能,还增加了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师通…

Apache Doris (六十二): Spark Doris Connector - (2)-使用

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 将编译jar包加入本地Maven仓库

Ps:图层样式 - 混合选项

“图层样式”对话框中的“混合选项” Blending Options提供了多种方式来控制图层的可视化效果以及如何与其他图层交互。 常规混合 General Blending 混合模式 Blend Mode 设置当前图层的混合模式。 即,“图层”面板上的混合模式选项。 图层混合模式仅影响图层的原有…

初学者的基本 Python 面试问题和答案

文章目录 专栏导读1、什么是Python?列出 Python 在技术领域的一些流行应用。2、在目前场景下使用Python语言作为工具有什么好处?3、Python是编译型语言还是解释型语言?4、Python 中的“#”符号有什么作用?5、可变数据类型和不可变…

Amazing OpenAI API:把非 OpenAI 模型都按 OpenAI API 调用

分享一个有趣的小工具,10MB 身材的小工具,能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。 让许多依赖 OpenAI API 的软件能够借助开发者能够接触到的,非 OpenAI 的 API 私有部署和使用起来。 写在前面 这个小工具软件写于两…

Linux 网络设置与基础服务

一 配置网络设置 主机名 hostname IP地址/netmask ifconfig ; ip a 路由:默认网关 route -n DNS服务器 cat /etc/resolv.conf 网络连接状态 ss netstat 域名解析 ns…

vue cli脚手架

1. vue cli 脚手架安装 参考官网:https://cli.vuejs.org/zh/guide/installation.html 步骤如下: 全局安装 npm install -g vue/cli # OR yarn global add vue/cli查看版本 vue --version # OR vue -V升级Vue cli (需要升级的时候&#x…

强化学习求解TSP(二):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法,用于解决基于奖励的决策问题。它是一种无模型的学习方法,通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策,该函数表示在给定状态下采取某个动作所获…

Redis入门-redis的五大数据类型+三种特殊的数据类型

前言:Redis有五大基本类型与三种特殊类型的介绍 Redis有五大基本类型:字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted se…

矩阵中的最长递增路径

题目链接 矩阵中的最长递增路径 题目描述 注意点 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕) 解答思路 因为最长递增路径一定是连续的,所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时(同一个…