Python之初识类与对象

类的概念与定义

在生活中,我们走在路边,看到一辆车,大脑中首先想到的是“这是一辆车,然后才是这是一辆什么牌子的车”,在这里,我们就用到了编程中的类的概念。同样的,看到一条小狗,也会先想到这是一条狗,然后会想到这是一条什么品种的狗。在编程中,把同一类的事物叫做类,把这个类里所共有的特征总结归纳并定义出来,就是类的属性;把这个类能会做什么事,能做什么事总结归纳并定义出来就是类的技能。

举个例子:

我想定义一个人的类,在python里面要怎么实现呢?

首先,我们会想到人都有什么共同的特征呢?人都有两只眼睛,都有两条腿,等等这些是每个人都有的自己的特征,

其次,每个人还都拥有自己的独有特征,每个人的姓名都不是一样的,每个人还都有自己的年龄,自己的性别,自己的学历等等这些是每个人的独有特征。

最后,人都有的技能还包括吃饭,睡觉,行走,学习等,这些是人都具有的技能。

那个现在我们这可以定义人的类,具体实现代码如下:

class Person:"""class是定义类的关键字,class后面的P erson是类的名字,python解释器会把class这个关键字后面的名称设定为类的名字,类的名字默认首字母大写。"""#定义每个人都有两个眼睛eye=2#定义每个人都有两条腿leg=2def __init__(self,name,age,sex,education):"""定义每个人的独有的特征,此处定义每个人都有自己的姓名,年龄,性别和学历"""self.name=nameself.age=ageself.sex=sexself.education=educationdef eat(self):#定义人都有的吃饭的技能print("%s is eating food"%self.name)def walk(self):#定义人都有的行走的技能print("%s is walking slow"%self.name)def study(self):#定义人都有的学习的技能print("%s is studying hard"%self.name)

执行上面的代码,python解释器会在内存中开辟出一块内存空间,用来保存类中定义的人类的特征和技能。

在上面的代码里,定义人类共有的特征时,相当于在人这个类的名称空间中定义了两个变量,定义人独有的特征时,相当于是在人类的名称空间里,声明了一个名叫“初始化”的函数,在函数中存放代表了每个人独有的特征的变量。

而接下来的三个函数则用来表示每个人都会做的动作,python解释器同样会为这三个函数在存放人类的名称空间的内存中开辟三块区域用来存放这三个函数(也可以称之为人类共有的技能。

对象的概念与定义

在编程的世界里,定义出一个类之后,我们就可以用这个类生成一个个的人,这个过程我们也称之为类的实例化,生成之后的人我们则称之为对象。

现在我想用上面的程序实例化出两个人,要怎样实现呢??

person1=Person("jack",22,"male","college")
person2=Person("lily",18,"female","middle school")

这样我们就实例化出两个人:

第一个人名字叫jack,22岁,性别为男,大学学历,

第二个个名字叫lily,18岁,性别为女,中学学历。

对象的使用

现在我们已经创建出了两个人,现在可以调用这两个人的特征和技能了

比如,我想知道person1的特征,可以使用如下方法:

print(person1.name)         #查看person1的名字,输出为:jack
print(person1.age)          #查看person1的年龄,输出为:22
print(person1.sex)          #查看person1的性别,输出为:male
print(person1.education)    #查看person1的学历,输出为:college

查看person1的技能时:

person1.walk()      #调用person1的行走的技能会打印:jack is walking slow
person1.eat()       #调用person1的吃饭的技能会打印:jack is eating food
person1.study()     #调用person1的学习的技能会打印:jack is studying hard

查看person2的特征和技能时使用同样的方法

类与对象的对比分析

print(Person.eat,person1.eat,person2.eat)

执行结果如下:

<function Person.eat at 0x0000000002951BF8>
<bound method Person.eat of <__main__.Person object at 0x000000000295D240>
<bound method Person.eat of <__main__.Person object at 0x000000000295D278>>

分别调用类的吃饭的方法,以及person1和person2的吃饭的方法,可以看到它们的内存地址都不一样,同样的,调用他们的其他的走路和学习的方法,它们各自的内存空间也都不一样,这充分说明了它们在内存中是各自开辟了一段自己的独有的内存空间。

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

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

相关文章

React-Hooks

一、类组件和函数式组件的对比 Hook 的特性&#xff1a;在编写class 的情况下&#xff0c;使用state 以及其他React 特性&#xff08;比如生命周期&#xff09; 类组件相比于函数式组件的优势&#xff1a; 类组件可以定义自己的state&#xff0c;用来保存组件自己内部的状态…

Linux:进程地址空间

目录 1.程序地址空间 2.进程地址空间 1.程序地址空间 我们在讲C/C语言的时候&#xff0c;32位平台下&#xff0c;我们见过这样的空间布局图 我们来验证一下这张图的正确性&#xff1a; int un_gval;int init_gval100;int main(int argc, char* argv[],char* env[]){//代码…

网络安全事件分级指南

文章目录 一、特别重大网络安全事件符合下列情形之一的&#xff0c;为特别重大网络安全事件&#xff1a;通常情况下&#xff0c;满足下列条件之一的&#xff0c;可判别为特别重大网络安全事件&#xff1a; 二、重大网络安全事件符合下列情形之一且未达到特别重大网络安全事件的…

Shell脚本 变量 语句 表达式

常见的解释器 #!/bin/sh #不推荐(了解) #!/bin/bash #!/usr/bin/python #!/bin/awk#!后跟的字符表示要启动的程序&#xff0c;该程序读取该文件执行。 #! 是一个约定的标记&#xff0c;它告诉系统这个脚本需要什么解释器来执行shell 函数 myShellName () {command1 }函数调用…

Linux: network: tcpdump:通过分析应该抓到包了,却没找不到的另一个原因:-s

最近又遇到一个类似的问题,也是在tcpdump抓到的包里没有找到应该看到的包,搞得很迷惑。这次是现场技术给研发挖了一个坑,给带偏了。研发自己抓包,发现根本就是没有丢在主机和虚拟机之间,也不是Linux内核丢掉了包。 那怎么回事呢?如果研发从主机上抓的没有问题,而是技术…

【计算机设计大赛作品】VR项目-中国古字贾湖刻字—信息可视化赛道获奖项目深入剖析【可视化项目案例-21】

🎉🎊🎉 你的技术旅程将在这里启航! 记得看本专栏里顶置的可视化宝典导航贴哦! 🚀🚀 本专栏为可视化专栏,包含现有的所有可视化技术。订阅专栏用户在文章底部可下载对应案例完整源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论你…

前端实现一个时间区间内,再次单选功能,使用Antd组件库内日历组件Calendar

需求&#xff1a;需要先让用户选择一个时间区间&#xff0c;然后再这个时间区间中&#xff0c;让用户再次去单选其种特殊日期。 思路&#xff1a; 1.先用Antd组件库中日期选择DatePicker.RangePicker实现让用户选择时间区间 2.在选择完时间区间后&#xff0c;用这个时间区间…

从零开始 --- 创建vue项目

1、Vue脚手架创建项目 vue create home_vue 我选择了vue3 2、引入element-plus npm i element-plus vue2 对应 npm i element-ui main.js中 import { createApp } from vue import App from ./App.vue import ElementPlus from element-plus import element-plus/theme-…

英语中疑问句

一般疑问句 Is there any tea in the cup? Do you have any children? May I have some fish? Would you like some tea? Could you give me some advices? Shall we buy some vegetables? Should you do like this? Can I borrow some money from you? Why not have …

Spring框架知识总结

目录 1、Spring框架有哪些设计模式&#xff1f; 2、介绍一下Spring框架和SpringBoot框架&#xff1f; 3、介绍一下SpringBoot具有哪些功能模块&#xff1f; 4、Spring用到了什么组件&#xff1f; 5、什么是IoC? 什么是AOP&#xff1f; 6、SpringBoot运行原理&#xff1…

鸿蒙HarmonyOS开发用什么语言

1.网上流行一句有中国底蕴的话&#xff1a;鸿蒙系统方舟框架盘古大模型。都方舟框架了肯定主推的是ArkUI框架。其实还能使用C、Java和Js开发。 2.从API8开始&#xff0c;Java语言已经从鸿蒙开发剔除了&#xff0c;而官方推荐的是ArkTs.下图是ArkTS与TS、JS的关系。 ArkTs 是TS的…

BFS:八数码问题求解

八数码原题 剖析一下BFS BFS算法是一种图遍历算法&#xff0c;它从起点开始&#xff0c;逐层扩展搜索范围&#xff0c;直到找到目标节点为止。 BFS算法一般选择队列作为节点存储的数据结构&#xff0c;我们将搜索目标节点的问题抽象为寻找目标状态&#xff0c;那么队列…

Vue3 reative回显问题

1. reactive 在做项目的时候通常会遇到这种情况&#xff0c;比如我们有一个 Table 显示数据&#xff0c;添加 Table 数据的时候使用 dialog 弹出&#xff0c;在里面填写字段然后添加。 在 vue3 中&#xff0c;对于对象的响应式定义推荐使用 reactive &#xff0c;那么可以写入…

运筹学经典问题(二):最短路问题

问题描述 给定一个图&#xff08;有向图或无向图&#xff09; G ( V , E ) G (V, E) G(V,E)&#xff0c; V V V是图中点的集合&#xff0c; E E E是图中边的集合&#xff0c;图中每条边 ( i , j ) ∈ E (i, j) \in E (i,j)∈E都对应一个权重 c i j c_{ij} cij​&#xff08;…

Android取消深色适配

从Android10&#xff08;API 29&#xff09;开始&#xff0c;在原有的主题适配的基础上&#xff0c;Google开始提供了Force Dark机制&#xff0c;在系统底层直接对颜色和图片进行转换处理&#xff0c;原生支持深色模式。当系统设置深色主题背景或者进入省电模式情况下会进入深色…

2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;烟花爆竹经营单位主要负责人证模拟考试题库是根据烟花爆竹经营单位主要负责人…

C++ STL容器概览

容器概览 容器分类 顺序容器提供对元素&#xff08;半开&#xff09;序列的访问。 vectorlistforward_listdeque 关联容器提供基于关键字的关联查询。 有序关联容器&#xff1a;通常用平衡二叉树&#xff08;红黑树&#xff09;实现。 mapmultimapsetmultiset 无序关联容器&a…

NestJS使用gRPC实现微服务通信

代码仓库地址&#xff1a;https://github.com/zeng-jc/rpc-grpc-practice 1.1 基本概念 gRPC 基于 Protocol Buffers&#xff08;protobuf&#xff09;作为接口定义语言&#xff08;IDL&#xff09;&#xff0c;意味着你可以使用 protobuf 来定义你的服务接口&#xff0c;gRP…

【HDFS面试】HDFS面试题答案

题目 HDFS文件写入和读取流程 HDFS组成架构 介绍下HDFS&#xff0c;说下HDFS优缺点&#xff0c;以及使用场景 HDFS作用 HDFS的容错机制 HDFS的存储机制 HDFS的副本机制 HDFS的常见数据格式&#xff0c;列式存储格式和行存储格式异同点&#xff0c;列式存储优点有哪些? …

【环境搭建】Win10下安装Docker

下载地址 Docker Windows 桌面版下载地址 各镜像下载地址 可能遇到的问题 安装后一直显示以下文字 Starting the Docker Engine… Docker Engine is the underlying technology that runs containers 请尝试使用此方法&#xff1a;https://zhuanlan.zhihu.com/p/667495068