Python3入门基础(10)一个对象

2023-11-07

Python3 面向对象

面向对象技术,与 Java 类似:

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类定义

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。

语法:

class ClassName:

类对象

类对象支持两种操作:属性引用和实例化。

属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。

类对象创建后,类命名空间中所有的命名都是有效属性名。

sms = WxWorkSmsNews()
sms.send_msg_txt_img()

类的属性

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

类的方法

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

self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定使用 self。

类的私有方法

__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。

类的专有方法

类的专有方法 含义
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__ 按照索引赋值
__getitem__ 按照索引获取值
__len__ 获得长度
__cmp__ 比较运算
__call__ 函数调用
__add__ 加运算
__sub__ 减运算
__mul__ 乘运算
__truediv__ 除运算
__mod__ 求余运算
__pow__ 乘方

继承

子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。

单继承

class DerivedClassName(BaseClassName):

多继承

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法。

class DerivedClassName(Base1, Base2, Base3):

实例

# 定义父类
import time


class people:
    # 定义基本属性(公开)
    name = ''
    age = 0

    # 定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0

    # 定义带参构造方法
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.__weight = weight

    def speak(self):
        print("{} 说:我 {} 岁。".format(self.name, self.age))


# 定义子类
# 单继承(学生对象继承people对象)
class student(people):
    # 定义基本属性(公开)
    grade = ''

    def __init__(self, name, age, weight, grade):
        people.__init__(self, name, age, weight)
        self.grade = grade

    # 覆写父类的方法(重写,类似 Overwrite)
    def speak(self):
        print("{} 说:我 {} 岁了,我在读 {} 年级。".format(self.name, self.age, self.grade))


# 另一个类,多重继承之前的准备
class speaker:
    # 定义基本属性(公开)
    name = ''
    topic = ''

    def __init__(self, name, topic):
        self.name = name
        self.topic = topic

    def speak(self):
        print("我叫 %s,我是一个演说家,我演讲的主题是 %s。" % (self.name, self.topic))


# 多重继承(演说家实习生多重继承student、speaker对象)
# 如果父类中有方法名同,默认调用的是在括号中参数位置排前父类的方法
class trainee_a(speaker, student):
    # 定义基本属性(公开)
    age = ''

    def __init__(self, name, age, weight, grade, topic):
        student.__init__(self, name, age, weight, grade)
        speaker.__init__(self, name, topic)


class trainee_b(student, speaker):
    # 定义基本属性(公开)
    age = ''

    def __init__(self, name, age, weight, grade, topic):
        student.__init__(self, name, age, weight, grade)
        speaker.__init__(self, name, topic)


# 我叫 小黑,我是一个演说家,我演讲的主题是 Python。
traineeStudentA = trainee_a("小黑", 12, 123, 9, "Python")
traineeStudentA.speak()


# 小白 说:我 12 岁了,我在读 9 年级。
traineeStudentB = trainee_b("小白", 12, 123, 9, "Python")
traineeStudentB.speak()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3入门基础(10)一个对象 的相关文章

随机推荐

  • obj文件

    obj 文件是一种常用的 3D 模型文件格式 它由许多顶点坐标 法向量和纹理坐标组成 可以用来描述复杂的三维模型 obj 文件是一种文本文件 可以使用纯文本编辑器打开 也可以使用专门的 3D 模型软件来打开 编辑和渲染 obj 文件通常与
  • 1800亿参数,世界顶级开源大模型Falcon官宣!碾压LLaMA 2,性能直逼GPT-4

    来源 新智元 导读 一经发布 地表最强开源模型Falcon 180B直接霸榜HF 3 5万亿token训练 性能直接碾压Llama 2 一夜之间 世界最强开源大模型Falcon 180B引爆全网 1800亿参数 Falcon在3 5万亿to
  • 电路中的输入与输出电阻计算

    电路的输入与输出电阻计算 前言 一 输入电阻 1 一端口网络的概念 一端口网络的特性 输入电阻的计算方法 前言 本人是大二电子系的一个学生 大二上在学习模电 当学习到各种BJT电路 FET电路 差分放大电路或负反馈放大电路时 新学习的增益计
  • 生信学习——生信人的20个R语言习题(上)(附详细答案解读)

    题目目录 1 安装一些R包 2 了解ExpressionSet对象 比如CLL包里面就有data sCLLex 找到它包含的元素 提取其表达矩阵 使用exprs函数 查看其大小 3 了解 str head help函数 作用于第二步提取到的
  • 第 14 篇 : 安装Docker

    1 安装 任选其一 从160 165依次安装 批量安装 1 1 按照官方文档安装 Install on CentOS 1 2 通过阿里云镜像安装 推荐 sudo yum remove docker docker client docker
  • 陶氏公司将出席2023第二届中国汽车碳中和峰会

    2023第二届中国汽车碳中和峰会将于10月19日 20日在上海举办 本次峰会将为行业领导者 政策制定者和专家提供一个平台 讨论汽车行业减少碳排放的策略 专家们将从政策 供应链 ESG 替代能源解决方案 汽车材料创新 法律等不同领域分享碳中和
  • 01.个人项目难点汇总2 css定制科技感缺角边框

    01 CSS3实现缺角矩形 折角矩形以及缺角边框 前言 前几天偶然看到缺角矩形这个功能 脑袋中第一想法是 搞个绝对定位的伪元素 哪里需要挡哪里 或者找UI小哥聊聊天 忽然灵光一闪 想起之前翻过的 CSS揭秘 一书 记得有这个篇章 遂有了此文
  • react入门+UMI

    React 一 创建项目 安装基本第三方库以及配置所需目录 sudo npm i g create react app npm下安装react环境 create react app react demo 创建一个项目名为react demo
  • 从Gles、Vulkan到Metal(一)-- 数据和提交

    无论以任何形式本篇文章内容 请注明来自leonnwei的csdn blog 引言 一直想整理下关于移动端图形编程API的文档 图形API为何重要 如果说图形编程的内功是计算机图形学的诸原理和算法 那么外功就是实实在在的硬件API 不能精通A
  • Apache License 2.0

    Apache License 2 0 是 Apache 软件基金会发布的开源软件许可证 它是一种宽松的 允许商用的许可证 适用于开源项目和商业项目 Apache 2 0 许可证是一个相对较新的版本 于2004年发布 取代了早期的 Apach
  • 决策树——信息熵,条件熵,信息增益

    1 信息熵 信息熵是度量样本集的纯合度的一种常用的指标 熵值越大 随机变量的不确定性越高 比如 0 0 01 1 1 1 1 2 3 4 5 6 7 在这两组数据中 上面的数据的不确定性要小 只有两种可能性 抽中的数字2的概率为1 2 所以
  • overleaf写论文笔记(latex)

    overleaf官网 www overleaf com overleaf中文版 cn overleaf com 目录 从零开始 获取模板 文章标题修改 作者修改 摘要 页脚文字重叠 遮挡 三线表绘制 表格内单元格合并 不同行列数不同 文字加
  • 黑盒、白盒、灰盒,如何选择合适的模糊测试工具?

    在软件开发和安全领域 模糊测试是一种常用技术 用于发现应用程序或系统中的潜在漏洞和安全弱点 选择不同的模糊测试方法将极大地影响测试的有效性和效率 本文将比较对比黑盒 白盒和灰盒模糊测试的特点和优势并提供选型指导 模糊测试的分类 黑盒模糊测试
  • JDBC学习笔记一之JDBC的下载、引用、标准api介绍

    1 下载MySQL的JDBC驱动jar包 进入MySQL官网 https www mysql com 然后按图操作 2 下载Oracle的JDBC驱动jar包 按图提示操作 2 1引用Oracle的JDBC驱动jar包 2 2 Oracle
  • 软件测试工程师工作有多累?怎么入门学习软件测试呢?

    软件测试随着时间的发展 越来越受欢迎了 那么 你了解过软件测试吗 软件测试工程师工作累吗 跟随千锋一起来了解一下吧 1 其实IT行业都需要经常加班的 所以软件测试和软件开发其实都一样 当然了 一般来说开发会更累一点 2 目前国内软件测试的待
  • neo4j 内存介绍

    描述Neo4j内存配置和使用的不同方面 内容翻译neo4j 操作手册 1 总览 1 1 操作系统内存 必须保留一些内存以运行操作系统本身的进程 不可能显式配置应为操作系统保留的RAM数量 因为这是在配置页面缓存和堆空间之后仍保持可用的RAM
  • 遍历子文件编码格式互换(UTF-8与GB2312)

    遍历子文件编码格式互换 UTF 8与GB2312 在日常开发中 我们经常会遇到需要将文件的编码格式从一种转换为另一种的情况 特别是在不同的操作系统和编辑器之间共享代码文件时 本篇文章将介绍一个Python脚本 用于遍历指定文件夹下的所有 c
  • 12月9号实验报告四

    完成apache服务器能够使用php解析 phtml php3 第一步 先修改配置文件httpd conf 添加 phtml php3 第二步 创建 phtml文件 php3文件 第三步 验证 phtml文件 php3文件
  • MyBatis(四) 主键生成策略

    1 数据库支持自动生成主键 若数据库支持自动生成主键的字段 比如 MySQL和 SQL Server 则可以设置useGeneratedKeys true 然后再把keyProperty 设置到目标属性上 mysql 支持自增主键 自增主键
  • Python3入门基础(10)一个对象

    Python3 面向对象 面向对象技术 与 Java 类似 类 Class 用来描述具有相同的属性和方法的对象的集合 它定义了该集合中每个对象所共有的属性和方法 对象是类的实例 方法 类中定义的函数 类变量 类变量在整个实例化的对象中是公用