【python】类与对象

这篇具有很好参考价值的文章主要介绍了【python】类与对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

类:对一系列变量与方法的封装

类的定义

创建一个类需要使用关键字 class,例如创建一个学生类,其中要包含学生的姓名、学号、性别、年龄四个信息:


class Student:
    Id=None   # None 表示初始信息为空值
    name=None
    age=None
    gender=None
    

对象

创建一个类对象也就是对类实现实例化:

stu1=Student()  # 创建一个 Student 类对象
# 定义一个 Student 类
class Student:
    Id=None  # 默认定义成员初始信息为空 None
    name=None
    age=None
    gender=None

stu1=Student()  # 创建一个类对象
# 对类对象的各个成员进行实例化
stu1.name="lisa"
stu1.age=19
stu1.gender="女"
stu1.Id=1001
print(stu1.Id,stu1.name,stu1.age,stu1.gender)

【python】类与对象,python,python,开发语言

类中成员

在类内部定义的变量成为类的成员变量,类内定义的函数方法称为类的成员方法

class Student:
    Id=None
    name=None
    age=None
    gender=None


    def GetStudent(self):
        print(self.Id,self.name,self.age,self.gender)

stu1=Student()  # 创建一个类对象
stu1.name="lisa"
stu1.age=19
stu1.gender="女"
stu1.Id=1001

stu1.GetStudent()   
# 对象.成员方法--------即可在类外调用该类的成员方法


【python】类与对象,python,python,开发语言

我们可以发现,在类内定义的成员方法含有一个默认的参数 self ,这就相当于C++类中成员函数内部隐含的 *this 指针,同样代表的是调用该成员方法的对象自身,通过这个默认的参数,我们可以获取到该类中所有的成员

类的构造方法

在 C++ 中类的构造方法名必须与类名同名,但在 python 中可不是这样的哦~

python 中构造方法名称为 : _init_

class Student:
    # name=None
    # age=None
    # tel=None

    def __init__(self,name,age,tel):  # 类内的构造方法
        self.name=name           # 既有赋值功能也有定义功能,因此上边的成员定义可以省略
        self.age=age
        self.tel=tel
        print('Student 类创建了一个对象')

stu=Student('seven',32,'13803803401')
print(stu.name,stu.age,stu.tel)


【python】类与对象,python,python,开发语言

这里需要注意的是:

C++ 中只有在类中定义了成员变量,则根据访问权限相应的在类内或者类外访问到已经定义好的成员变量,但是在 python 中可以将成员变量的定义放在构造函数内部进行定义
例如上边的例子中我们去除掉成员方法外部的成员变量定义语句,将成员变量的定义与赋值都放在了类的构造方法内部,运行并未报错

类的成员方法–魔法函数

获取字符串方法:_str_

假设我们没有定义该成员方法时,对定义的学生对象进行输出:

【python】类与对象,python,python,开发语言

而在定义了 字符串获取方法之后:
我们发现可以正确的输出类对象的信息

【python】类与对象,python,python,开发语言

实现小于(大于)方法:_lt_

在没有定义能够实现比较大小的成员方法时候,进行值的比较发现提示了错误信息-------无法进行两个 Student 类之间的比较,这主要是因为类内部的成员变量有 name 和 age ,编译器不知道两个对象之间的比较应该按照哪一个变量值进行比较(name or age),因此需要程序员自己来实现一个比较的方式
【python】类与对象,python,python,开发语言

    def __lt__(self, other):
        return self.age < other.age   # 实现按照年龄信息进行比较

【python】类与对象,python,python,开发语言

实现小于等于(大于等于)方法:_le_

在上边我们实现了判断两个对象内容大小关系的成员方法 _lt_ ,那它能否实现两个对象之间判断小于等于(大于等于)关系呢 ? 我们来试试看

【python】类与对象,python,python,开发语言

因此,引入了新的成员方法 : _le_

    def __le__(self, other):  # 实现小于等于(大于等于)比较
        return self.age<=other.age

【python】类与对象,python,python,开发语言

实现判等方法:_eq_

在没有定义判等方法之前,我们来看看编译器如何处理两个对象的判等:

【python】类与对象,python,python,开发语言

在该示例中,我们期望的是对不同对象的年龄进行判等,第一个比较结果 False 显然是正确的,因为 stu1 与 stu2 的年龄显然不相等;但是第二个比较结果怎么也是 False ? 比较的是 stu3 与 stu4 的年龄,而两个值都是 18 ,怎么不相等嘞?

这是因为编译器默认比较的是两个类对象的内存地址空间,显然内存地址空间是不相同的,结果返回 False

定义判等方法: _eq_

    def __eq__(self, other):
        return self.age==other.age   # 实现判等

【python】类与对象,python,python,开发语言

显然这次的输出结果是正确的

但是此处输出的 stu1、stu2、stu3、stu4 的结果怎么不是我们想要看到的对象内容信息呢?

小伙伴们是不是忘记了我们之前介绍的字符串方法呀? _str_

类中私有成员

学习了上边介绍的一系列类的成员方法之后,大家是不是都有一个疑惑:为什么所有的成员方法都加了两个 下划线 ,而我们在学习函数的时候并没有说定义函数名的时候要加下划线 ??

这主要是为了区别普通函数与类内私有成员方法的,只要函数名的前加这两个下划线,则说明该方法是属于类内部的私有成员方法;同理,类内部的私有成员变量也是有下划线的,我们来试试看吧~~

私有成员变量

私有成员在类的成员方法内是可以访问到的,类外是不可以访问到私有成员变量的

【python】类与对象,python,python,开发语言

【python】类与对象,python,python,开发语言

私有成员方法

【python】类与对象,python,python,开发语言

ps:
python 语言与 C++ 语言在语法上有一定的区别,也有一定的类似之处,注意区分~~文章来源地址https://www.toymoban.com/news/detail-518689.html

到了这里,关于【python】类与对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-基础篇-类与对象/面向对象程序设计

    “类”是物以类聚的 “类” 类 和 对象 是 面向对象编程的 两个 核心概念 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的, 不能直接使用 特征 被称为 属性 行为 被称为 方法 类 就相当于制造飞机时的 图纸 ,是一个 模板 ,是 负责创建对象的 定义类📚

    2024年01月19日
    浏览(49)
  • Python基础合集 练习19(类与对象3(多态))

    class Horse: def init (self, name) - None: self.name = name class Monkey: def init (self, name) - None: self.name = name class Mule(Horse, Monkey): def init (self, name, age) - None: super(). init (name) self.age = age mule1 = Mule(‘朵儿’, 2) mule1.mover() # 继承父类horse的move()方法 mule1.speak() # 继承父类donkey的speak()方法 print(mule1

    2024年02月02日
    浏览(37)
  • Python——狂肝两万字带你学会【类与对象】

    目录 01-初始对象 生活中的数据组织 程序中的数据组织​ 使用对象组织数据 总结01 02-类的成员方法 类的定义和使用 成员变量和成员方法  成员方法的定义语法  注意事项 成员方法——代码演示  总结02 03-类和对象 现实世界的事物和类 类和对象 使用类和对象描述现实事物

    2024年02月02日
    浏览(61)
  • < Python全景系列-6 > 掌握Python面向对象编程的关键:深度探索类与对象

    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。 Python全景系列的第六

    2024年02月06日
    浏览(61)
  • iOS开发Swift-6-深色模式,类与对象,MVC模式,弹出框,闭包-趣味问答App

    1.创建趣味问答App项目  2.创建一个问题文本,水平居中约束。 创建蓝、红两个按钮,放入Stack View中,给StackView水平居中约束,下边约束,设置两按钮间距为20.  设置进度条view与safe View关系为equal width。设置他们的比例为1:13.  3.为系统增加深色模式适配(仅限iOS13以上版本

    2024年02月10日
    浏览(42)
  • 【python基础知识】14.图书管理系统的搭建(类与对象实操)

    通过这个项目希望你可以学会用类与实例的方法编写程序,掌握面向对象编程的基本思维,为日后能处理更复杂的代码结构打牢基础。 我曾跟你提过,学Python,做项目是进步最快的。我没说的是:做项目总会遇到种种困难,想不通的逻辑,频频报错的代码。 所以,如果你在今

    2024年02月02日
    浏览(49)
  • C++初阶学习第三弹——类与对象(上)——初始类与对象

    前言: 在前面,我们已经初步学习了C++的一些基本语法,比如内敛函数、函数重载、缺省参数、引用等等,接下来我们就将正式步入C++的神圣殿堂,首先,先给你找个对象 目录 一、类与对象是什么? 二、类的各部分组成 1、类的定义 2、类的访问限定符及封装 3、类的作用域

    2024年04月26日
    浏览(47)
  • Java面向对象01——类与对象

    大家好,我是白夜,今天和大家聊聊类与对象 面向过程编程 C 语言就是面向过程编程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 面向对象编程 JAVA 是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 举

    2024年04月08日
    浏览(42)
  • 第九单元 面向对象一:类与对象

    假设,班级里40位同学,我们用程序保存40位学生的信息:学号,姓名,性别,生日,身份证号。如果是你,你会怎么实现? 小菜同学拿到这个题,奋书疾笔,马上写出如下代码:   那如果是有4000,4万?你是不是立马从入门到卸载了? 面向对象来告诉你解决方案!! 面向对

    2024年02月06日
    浏览(50)
  • TypeScript类与对象:面向对象编程的基础

    TypeScript 是 JavaScript 的一个超集,它为 JavaScript 添加了静态类型、类、接口和装饰器等面向对象编程的特性,并通过编译器将 TypeScript 编译成JavaScript,可以在任何 JavaScript 环境中运行,因此成为了 JavaScript 开发中不可或缺的工具。面向对象编程是现代编程语言的基础,而 Ty

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包