Python中的类——完美描述现实世界的事物

2023-11-11

Python学习——类

目录

Python学习——类

前言

类的基础语法

定义

构造方法

继承

掠夺


前言

众所周知,现实世界的事物由两部分组成,即属性和行为,类也可以包含属性和行为,所以描述现实世界事物是非常合适的。

例如:

  • 属性:灰发中分背带裤
  • 行为:唱跳rap打篮球

接下来让我们看看类到底是个啥

类的基础语法

定义

类由两部分组成:

  • 类的属性,又叫成员变量
  • 类的行为,又叫成员方法
首先类的名称需要首字母大写,其次类中的函数叫称为方法。
class 类名称
    成员变量
    def 成员方法(self,参数):
        成员方法体
self的注意点
  • self表示类对象本身
  • 只有通过self,成员方法才能访问类的成员变量
  • self不占用形参位置,调用时无需理会

构造方法

__init__的使用

函数内部的变量与外部是在两个空间,为了使自定义方法能在类里互通, 需要一个 self 作为载体,将需要互通的变量作为 self 的属性进行传递; 因此,构造方法__init__旨在使用载体self 来承载传入参数。  __init__特殊方法后的括号里要写上 self 以及传入参数, 而自定义方法后的括号就只需要写 self 即可。

输入10位练习生的基本属性
代码示例如下:
class Student:
    # 构建属性

    def __init__(self, name, clothing, hair_style):  # 构造方法
        self.name = name
        self.clothing = clothing
        self.hair_style = hair_style
    def info(self):
        print(f"练习生姓名:{self.name},练习生衣着:{self.clothing},练习生发型:{self.hair_style}")



for i in range(10):
    print(f"当前录入第{i+1}位练习生信息,总共录入10位练习生信息")
    stu_1 = Student(input(f"请输入练习生姓名:"), input(f"请输入练习生衣着:"), input(f"请输入练习生头型:"))   
    print(f"练习生{i+1}信息录入完成,信息为:【练习生姓名:{stu_1.name},练习生衣着:{stu_1.clothing},练习生发型:{stu_1.hair_style}】")
    continue

运行结果如下

继承

继承:在某个类(父类)的基础上添加几个方法,形成另一个类(子类)。
  •  父类从无到有去写属性和方法,第一行是 class 类名:
  • 子类可继承父类的属性和方法,第一行是 class 类名(父类名) :
子类在特殊方法里使用super()函数,就可以继承到父类的全部属性与方法。super().__init__(形参) 。
注意:在子类中写入与父类同名的方法可以实现覆盖。
代码示例如下:
"""
 演示继承
"""
class Student:
    # 构造方法
    def __init__(self, name, clothing, hair_style):  # 构造方法
        self.name = name
        self.clothing = clothing
        self.hair_style = hair_style

    def intr(self): # 自我介绍
        print(f"大家好,我是{self.name},大家多多关照")

    def time(self):  # 练习时长
        print(f"练习时长两年半。")

class Student_1(Student):   # 括号内填入父类名

    def __init__(self, name, clothing, hair_style):
        # 继承父类的信息
        super().__init__(name, clothing, hair_style)
    def intr(self): # 修改父类内部的介绍
        print(f"大家好,我是{self.name}")

    def skill(self):
        print(f"我会唱跳rap,还会打篮球。")

# 调用
stu = Student_1("ikun", "背带裤", "中分")
stu.intr()  # 调用修改后的父类信息,内容已经被子类修改
stu.time()  # 调用父类
stu.skill() # 调用子类

运行结果如下: 

掠夺

一个类可以掠夺很多其它的类,它可以将被掠夺的类当作掠夺类self 的属性使用,即在掠夺类的__init__中,将被掠夺的类赋给self。被掠夺的类的数量就不设上限。
假如掠夺者和被掠夺者里都有 intr 函数,掠夺者里的方法用 stu.intr(),被掠夺者里的方法用 stu.info.intr(),于是不会覆盖原被掠夺者内的同名方法。
代码示例如下:
class Student:   # 一个无辜的,被掠夺的类
    # 构造方法
    def __init__(self, name, clothing, hair_style):  # 构造方法
        self.name = name
        self.clothing = clothing
        self.hair_style = hair_style

    def intr(self): # 自我介绍
        print(f"大家好,我是{self.name},衣着{self.clothing},发型是{self.hair_style},大家多多关照")

    def time(self):  # 练习时长
        print(f"练习时长两年半。")

class Student_1:    # 粗暴的掠夺者

    def __init__(self, name, clothing, hair_style):
        # 继承父类的信息
        self.name = name
        self.clothing = clothing
        self.hair_style = hair_style
        self.info = Student(name, clothing, hair_style)  # 掠夺Student内部的方法

    def intr(self): # 同名也不影响被掠夺的内容
        print(f"大家好,我是{self.name}")

    def skill(self):
        print(f"我会唱跳rap,还会打篮球。")

# 调用
stu = Student_1("ikun", "背带裤", "中分")
stu.intr()  # 调用掠夺者的简介
stu.info.intr()  # 调用被掠夺者的简介
stu.info.time()  # 调用父类
stu.skill() # 调用子类

运行结果如下:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的类——完美描述现实世界的事物 的相关文章

随机推荐

  • Python如何优雅地可视化目标检测框

    1 引言 随着计算机视觉算法工程师的内卷 从事目标检测的小伙伴们越来越多了 很多时候我们费了九牛二虎之力训练了一版模型 可是可视化出来的效果平淡无奇 是不是有点太不给力啦 作为计算机视觉工程师 我们是不是应该关注下如何优雅地可视化我们模型地
  • 漫谈 ChatGPT 与问答式 BI

    近日 观远数据G park Let s Date BI 系列直播第二期 2023 金融业如何应对 流浪数据 顺利落幕 观远数据联合创始人兼首席数据科学家字节带来了 漫谈 ChatGPT 与问答式 BI 的探索思考 字节一方面介绍了一系列 C
  • IDEA这样配置,好用到爆炸

    1 idea 简介 IDEA 全称 IntelliJ IDEA 是 JetBrains 公司 使用 java 编程语言开发的集成环境 这家公司总部位于捷克共和国的首都布拉格 公司旗下还有其它产品 例如 WebStorm PyCharm Ph
  • secureCRT连接,密码是正确的却提示密码错误

    最近用securecrt连接kali 输入的密码绝对是正确的却提醒密码错误 发现是密码认证默认出了问题 解决方法 1 进入配置文件 2 改为允许以root进行登录 把permitrootligin 后改为yes 把最前面的 删掉 3 将密码
  • 2023 年 Pycharm 最新下载安装教程,亲测可用,持续更新

    前言 PyCharm 是一款功能强大的 Python 编辑器 具有跨平台性 鉴于目前最新版 PyCharm 使用教程较少 为了节约时间 来介绍一下 PyCharm 在 Windows下是如何安装的 这是 PyCharm 的下载地址 http
  • 华为机试---字符串运用-密码截取

    题目描述 Catcher是MCA国的情报员 他工作时发现敌国会用一些对称的密码进行通信 比如像这些ABBA ABA A 123321 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解 比如进行下列变化 ABBA gt 12ABB
  • Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks 中文翻译

    Social GAN Socially Acceptable Trajectories with Generative Adversarial Networks 中文翻译 如有异议 请多指教 非专业人员 仅供参考 摘要 理解人类的运动行为对
  • 【C++习题笔记】谭浩强C++程序设计(第三版)第七章

    本文是谭浩强老师c 程序设计 第三版 第七章的习题总结 主要涉及结构体的内容 1 定义一个结构体变量 包括年 月 日 编写程序 要求输入年月日 程序能够计算并输出改日是本年中的第几天 注意闰年问题 include
  • 《30天自制操作系统》笔记(02)——导入C语言

    30天自制操作系统 笔记 02 导入C语言 进度回顾 在上一篇 记录了计算机开机时加载IPL程序 initial program loader 一个nas汇编程序 的情况 包括IPL代码 helloos nas 编译生成helloos im
  • C++学习(七十五)有关Orekit

    Orekit ORbits Extrapolation KIT 是一款占用空间少的低层空间动力学 Java 库 它提供基础的元素 比如轨道 日期 属性和框架 和多种算法支持转换 分析和数值传递 Orekit 是纯 Java 库 运行时只依赖
  • 《C++11标准库》4.3.1标准的 Exception Class(异常类)

    所有被语言本身或标准库抛出的异常 都派生自基类 exception 定义于
  • 北大肖臻老师<<区块链技术>>笔记1

    课程的大纲 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊是后面的 首先是密码学基础的学习 crypto currency 虚拟货币 是不加密的 区块链上所有的教以
  • Cesium-terrain-builder(CTB)在Centos7中安装并生成地形数据

    Cesium terrain builder CTB 在Centos7中安装并生成地形数据 前言 步骤 安装docker 下载镜像并创建容器 生成地形数据 总结 前言 1 使用docker镜像 homme cesium terrain bu
  • linux运行appimage,技术

    你有没有下载过 AppImage 文件 而你不知道如何使用它 或许你可能知道如何使用它 但是你每次要运行它时必须要进入到下载了该 AppImage 的文件夹中来运行它 或者手动为其创建启动程序 使用 AppImageLauncher 这些就
  • 基于Open3D的点云处理5-点云之间的距离计算

    计算在一片点云中的每一个点在另一片点云中最近点的距离 常规写法 通过k d Tree进行搜索每个点的最近点 k idx dist k dTree search knn vector 3d pc2 points i k 通过k d Tree进
  • 万物分割SAM家族 越发壮大!HQ-SAM、FastSAM 和 FasterSAM(MobileSAM)

    卧剿 6万字 30个方向130篇 CVPR 2023 最全 AIGC 论文 一口气读完 1 更高质量 Segment Anything in High Quality 最近的 Segment Anything Model SAM 代表了分割
  • 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误

    症状 当 C 运行时 CRT 库和 Microsoft 基础类 MFC 库的链接顺序有误时 可能会出现以下 LNK2005 错误之一 nafxcwd lib afxmem obj error LNK2005 void cdecl opera
  • 面试用到的 常见SQL语句

    1 有一张shop表 有三个字段article author price 选出每个author的price的最高的纪录 要包含所有字段 解法一 使用相关子查询 SELECT article author price FROM shop s1
  • 数字电路设计之同步时钟采样模块

    同步时钟采样模块 为的是使得外部输入的异步信号需要经过系统时钟的同步化 且将输入的异步信号整形成一个时钟长的脉冲信号 module clk syn clk rst s in s out input wire clk input wire r
  • Python中的类——完美描述现实世界的事物

    Python学习 类 目录 Python学习 类 前言 类的基础语法 定义 构造方法 继承 掠夺 前言 众所周知 现实世界的事物由两部分组成 即属性和行为 类也可以包含属性和行为 所以描述现实世界事物是非常合适的 例如 属性 灰发中分背带裤