【深度学习】 Python 和 NumPy 系列教程(八):Python类

news/2024/10/17 23:29:27/

目录

一、前言

二、实验环境

三、Python类(Class)

1、初始化方法(__init__)

2、属性和实例变量

3、方法和实例方法

4、继承

5、多态

6、类变量和静态方法

7、魔术方法


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、数组索引、数据类型、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

        Python 3.7

        运行下述命令检查Python版本

 python --version 

三、Python类(Class)

1、初始化方法(__init__

class Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person("Alice", 25)
print(person.name)  # 输出: Alice
print(person.age)  # 输出: 25

        __init__方法用于初始化Person类的对象。通过self.name = nameself.age = age语句,将传递给构造函数的参数赋值给对象的属性。

2、属性和实例变量

class Circle:def __init__(self, radius):self.radius = radiuscircle = Circle(5)
print(circle.radius)  # 输出: 5

        Circle类具有一个属性radius,并且在初始化方法中使用传递的参数对其进行赋值。通过circle.radius可以访问对象的属性。

3、方法和实例方法

class Dog:def __init__(self, name):self.name = namedef bark(self):print(f"{self.name} is barking!")dog = Dog("Buddy")
dog.bark()  # 输出: Buddy is barking!

        Dog类具有一个方法bark,通过self.name访问对象的属性,并输出相应的信息。

4、继承

class Animal:def __init__(self, name):self.name = namedef eat(self):print(f"{self.name} is eating.")class Dog(Animal):def bark(self):print("Woof!")dog = Dog("Buddy")
dog.eat()  # 输出: Buddy is eating.
dog.bark()  # 输出: Woof!

        Dog类继承自Animal类,并且可以使用Animal类中定义的方法和属性。子类可以添加新的方法,如bark

5、多态

class Animal:def __init__(self, name):self.name = namedef make_sound(self):passclass Dog(Animal):def make_sound(self):print("Woof!")class Cat(Animal):def make_sound(self):print("Meow!")animals = [Dog("Buddy"), Cat("Whiskers")]for animal in animals:animal.make_sound()

        Animal类具有一个make_sound方法,但是在子类中具有不同的实现方式。通过遍历animals列表,可以调用不同类的make_sound方法实现多态。

6、类变量和静态方法

class Circle:pi = 3.14159def __init__(self, radius):self.radius = radius@staticmethoddef calculate_area(radius):return Circle.pi * radius ** 2circle = Circle(5)
print(circle.calculate_area(5))  # 输出: 78.53975
print(Circle.calculate_area(5))  # 输出: 78.53975

       pi是一个类变量,被所有实例共享。calculate_area是一个静态方法,可以通过类名或实例来调用。

7、魔术方法

class Person:def __init__(self, name):self.name = namedef __str__(self):return f"Person: {self.name}"person = Person("Alice")
print(person)  # 输出: Person: Alice

        __str__是一个魔术方法,用于返回对象的字符串表示。通过在类中定义__str__方法,可以自定义对象的字符串输出形式。


http://www.ppmy.cn/news/1103816.html

相关文章

Gurobi使用(一)——操作指南(转自知乎)

好像还是要学一下Gurobi如何使用的,不然这代码着实有点抽象了 一、入门操作 一般来说,求解一个数学规划模型的时候,通常会按照如下步骤解决问题: 设置变量---addVar()。 更新变量空间---update()。 设定目标函数---setObjective()。 设定约…

【Redis】4、rsync远程同步

与inodify结合使用,实现实时同步 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,;支持增量备份,并保持链接和权限&#…

C# OpenVino Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using static System.Net.Mime.MediaT…

9月6日上课内容 redis高可用

RDB 持久化 RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。 1. 触发条件 RDB持久化…

【笔试强训选择题】Day39.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff…

FirmAFL

FirmAFL使用并改进了Firmdyne模拟方式,并利用AFL对IoT固件实施高通量灰盒Fuzzing。 一、项目简介 FIRM-AFL 是 第一个针对物联网固件的高吞吐量灰盒模糊测试器。 支持mipsel、mipseb和armel三种CPU架构 ,涵盖Firmadyne数据库中90.2%的固件。 FIRM-AFL 解…

橘子称重问题C++

问题 A: 橘子称重 时间限制: 1.000 Sec 内存限制: 16 MB提交 状态 题目描述 学校买回来一大箱橘子&#xff0c;有m个&#xff08;m>100 && m < 1000&#xff09;&#xff0c;橘子大小比较均匀&#xff0c;学校想称一下总共有多重&#xff0c;发现大称坏掉了还没…

《Web安全基础》04. 文件操作安全

web 1&#xff1a;文件操作安全2&#xff1a;文件上传漏洞2.1&#xff1a;简介2.2&#xff1a;防护与绕过2.3&#xff1a;WAF 绕过2.3.1&#xff1a;数据溢出2.3.2&#xff1a;符号变异2.3.3&#xff1a;数据截断2.3.4&#xff1a;重复数据 3&#xff1a;文件包含漏洞4&#xf…