python面向对象:入门

news2024/12/22 19:55:40

python面向对象:入门


文章目录

  • python面向对象:入门
  • 一、实验目的
  • 二、实验原理
  • 三、实验环境
  • 四、实验内容
  • 五、实验步骤
    • 1.创建类和对象
    • 2.构造方法
    • 3.类中的实例方法


一、实验目的

掌握类的基本使用

二、实验原理

面向过程:根据业务逻辑从上到下写代码。

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可。

面向对象:对函数进行分类和封装,让开发更快更好更强。

三、实验环境

Python 3.6以上

Ipython

PyCharm

四、实验内容

创建类和对象

构造方法

类中的实例方法

五、实验步骤

1.创建类和对象

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

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

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

在这里插入图片描述

self代表类的实例,类中的实例方法(类中的实例方法后面会有讲到)与普通的函数只有一个特别的区别,

它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

实例:

# 创建类
class Foo:

    def bar(self):
        print('Bar')

    def hello(self, name):
        print('I am %s' %name)

# 根据类Foo创建对象obj
obj = Foo()
obj.bar()            # 执行Bar方法
obj.hello('zhangyu') # 执行Hello方法 

以上实例执行结果:

Bar
I am zhangyu

2.构造方法

构造方法__init__()

类定义了此方法的话,类的实例化操作会自动调用此方法。

class Complex:
    def __init__(self, realpart, imagpart):
        self.r = realpart
        self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)
执行以上程序输出结果为:3.0 -4.5

3.类中的实例方法

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,实例方法在创建时会默认携带一个self参数,且为第一个参数,self代表的是类的实例,供当前类在内部中的调用,一般不进行更改。

# 类定义
class People:
    # 定义类属性
    _num = 0

    # 定义构造方法
    def __init__(self, n, a, w):
        self.name = n
        self.age = a
        # 定义私有属性,私有属性在类外部无法直接进行访问
        self.__weight = w

    # 实例方法
    def speak(self):
        print("%s 说: 我 %d 岁。" % (self.name, self.age))


# 实例化类
p = People('zhangyu', 5, 20)
p.speak()
执行以上程序输出结果为:zhangyu 说:5 岁。

在上面程序中看到了很多下划线和双下划线,下划线都分别代表什么作用:

__foo__:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突,就是例如

__init__ : 构造函数,在生成对象时调用

__del__ : 析构函数,释放对象时使用

__repr__ : 打印,转换

__setitem__ : 按照索引赋值

__getitem__: 按照索引获取值

__len__: 获得长度

__cmp__: 比较运算

__call__: 函数调用

__add__: 加运算

__sub__: 减运算

__mul__: 乘运算

__div__: 除运算

__mod__: 求余运算

__pow__: 乘方

创作不易,可以点赞收藏哦!!!

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

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

相关文章

Win10 BCD文件损坏怎么修复?

在Windows 10操作系统中,BCD代表引导配置数据(Boot Configuration Data),Windows运行时BCD将告诉Windows引导加载程序在哪里查找引导信息, 因此,它对成功地加载和运行操作系统是非常重要的。哪些情况下会导…

二叉树的前序遍历

题目144. 二叉树的前序遍历 - 力扣(LeetCode)本章我们来探讨运用二叉树中所学的知识解决本题。对二叉树仍有疑问的小伙伴可以点击下方链接哦。参考文献:(1条消息) 二叉树(三)_染柒_GRQ的博客-CSDN博客原理首先我们来回…

CyberBattleSim-(内网自动化渗透)研究分析

**01 **背景知识介绍 CyberBattleSim介绍 CyberBattleSim是一款微软365 Defender团队开源的人工智能攻防对抗模拟工具,来源于微软的一个实验性研究项目。该项目专注于对网络攻击入侵后横向移动阶段进行威胁建模,用于研究在模拟抽象企业网络环境中运行的…

基于蜣螂算法优化的核极限学习机(KELM)分类算法-附代码

基于蜣螂算法优化的核极限学习机(KELM)分类算法 文章目录基于蜣螂算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于蜣螂算法优化的KELM4.测试结果5.Matlab代码摘要:本文利用蜣螂算法对核极限学习机(KELM)进行优化,并用于分类1.KELM理…

R语言贝叶斯方法在生态环境领域中的应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域,其火爆程度已经跨越了学术圈,如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

STM32CubeMx使用FreeRTOS搭建printf输出串口打印-----基于正点原子开发板阿波罗

文章目录STM32CubeMx使用FreeRTOS搭建printf输出串口打印-----基于正点原子开发板阿波罗1.输入目标芯片2.选择RCC时钟3.配置调试模式4.USART的配置5.配置中断6.printf的重定向功能7.代码添加8.修改中断函数9.添加全局变量10.增加FreeRTOS支持11.在FreeRTOS中添加源码STM32CubeM…

【数学建模】数学建模中的常用工具推荐

前言 整理了几款我在建模比赛中需要准备的小工具,后续会随时不定期更新,以及完善内容,需要的小伙伴建议收藏一波~ [1] 公式编译器 Axmath(建议购买正版)mathtypeWord内置的公式编辑器 Axmath是国产的软件&#xff0…

pytorch安装(模式识别与图像处理课程实验)

pytorch安装(模式识别与图像处理课程实验)1、 打开cmd,创建torch虚拟环境。2、 激活创建的torch虚拟环境2.1、 进入pytorch官网,复制如下的命令,进行pytorch的安装2.2、测试安装是否成功3、 通过pip命令安装pytorch&am…

基于WPS实现Excel表的二级下拉选择框

基于WPS实现Excel表的二级下拉选择框第一步:先在sheet2上创建源数据第二步:创建一级下拉框第三步:创建二级下拉框报错记录: “列表源”XXXXXX第一步:先在sheet2上创建源数据 第二步:创建一级下拉框 一级下…

难受啊,备战字节跳动132天,因为一个疏忽让我前功尽弃...

📌 博客主页: 程序员二黑 📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识! 📌 如果你也想学习软件测试,文末卡片有我的交流群,加入我们,一…

Kibana报错:Kibana server is not ready yet

背景 网页中访问kinaba http://localhost:5601 ,一直提示“Kibana server is not ready yet”。 执行如下命令查看kibana日志, docker logs kibana 发现有提示: 正文 怀疑是不是容器重启后,各容器内部ip变化了导致。 1、故执行如下命令查看…

Android框架源码分析——从设计模式角度看 RxJava 核心源码

从设计模式角度来看 RxJava 核心源码 从订阅者模式和装饰器模式的角度来看 RxJava 源码。 1. 普通订阅者模式与 RxJava 中的订阅者模式 订阅者模式又叫做观察者模式,主要用于实现响应式编程。其本质,就是接口回调。 普通订阅者模式:多个对…

来啦,华东师范大学2024年入学MBA提前面试流程及时间

项目简介华东师范大学系国家教育部和国务院学位办【2007(36)号】批准的工商管理硕士(MBA)培养单位。华东师范大学MBA项目,依托学校深厚的人文底蕴和育人文化,利用多学科支撑的优势、利用多元化的办学资源&a…

CUAD学习笔记

目录一、头文件**1、mex.h****2、matrix.h****3、string****4、iostream****5、omp.h**6、cuda_runtime.h7、stdlib.h8、sys/time.h9、stdio.h10、string.h11、time.h12、math.h13、device_launch_parameters.h二、一些声明语句1、using namespace std**2、typedef unsigned ch…

pytorch数据读取深入理解

来源:投稿 作者:小灰灰 编辑:学姐 了解数据 Q:我现在什么基础也没有,我要学习深度学习,学习cv,学习nlp。 A:首先我们知道,深度学习是建立在数据集的基础上。现在呢&…

【C++】C++11 ~ 右值引用和移动语义

🌈欢迎来到C专栏~~右值引用和移动语义 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一…

mongodb 使用密钥文件身份验证部署副本集

一 副本集介绍 集群中每个节点有心跳检测 如果由于资源限制,可以部署一主一从一仲裁 副本集集群可以实现主从的自动切换 Read Preference 在客户端连接中,可以实现读取优先,就是连接器会自动判断,把读取请求发送到副本集中的…

whois命令常见用法

whois命令常见用法whois命令简介安装whoisWindows使用whoisLinux安装whoiswhois常见用法Linux下whois查询域名注册信息whois命令简介 whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。…

分析第一个安卓项目

整体分析 .gradle和.idea 这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。 app 项目中的代码、资源等内容几乎都是放置在这个目录下的。 gradle 这个目录下包含了gradle wrapper的配置文件,使…

flowable流程设计器的几个bug修改记录

今天根据客户反馈开源项目宁波阿成 (nbacheng) - Gitee.com 有一些bug,主要是前端的,所以今天修正一下 1、对于第一个节点是发起人,后面是多人选择的时候,approval数据被清空了 就是上面的流程,发现有问题 对这种情…