python中类的使用详解

news2024/9/25 11:15:10

目录

一.类的定义和使用方法

成员变量和成员方法

成员方法的定义语法和self关键字

 小结

二.类和对象

 小结

三.属性(成员变量)的赋值

构造方法:_ _init_ _()

 小结


 

一.类的定义和使用方法

可以使用类去封装属性,并基于类创建出一个个的对象来使用。
类的使用基本语法:

  •  class是关键字,表示要定义类了
  • 类的属性,即定义在类中的变量(成员变量)
  • 类的行为,即定义在类中的函数(成员方法)

创建类对象的语法:

对象=类名称()

成员变量和成员方法

 可以看出,类中:
不仅可以来定义属性用来记录数据
也可以定义函数,用来记录行为

其中

类中定义的属性(变量),我们称之为:成员变量
类中定义的行为(函数),我们称之为:成员方法

 所以,从现在开始定义在类里面的函数我们就称为方法

成员方法的定义语法和self关键字

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

def 方法名(self,形参1,......,形参N):
        方法体

可以看到,在方法定义的参数列表中,有一个: self关键字self关键字是成员方法定义的时候,必须填写的。

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法的是,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self

注意

self关键字,尽管在参数列表中,但是传参的时候可以忽略它。如:

演示

class Student:
    name = None
    def say_hi (self):
        print("helllo")
    def say_hi2(self,msg):
        print(f"hello,{msg}")
stu=Student()
stu.say_hi()
stu.say_hi2("很高兴认识大家!")

 结果是

 

class Student:
    name = "张三"
    def say_hi (self):
        print(f"helllo,我的名字是{self.name}")
    def say_hi2(self,msg):
        print(f"hello,{msg}")
stu=Student()
stu.say_hi()
stu.say_hi2("很高兴认识大家!")
print("----------")
stu.name="李四"
stu.say_hi()

 小结

1.类是由哪两部分组成呢?

  • 类的属性,称之为:成员变量
  • 类的行为,称之为∶成员方法

注意:函数是写在类外的,定义在类内部,我们都称之为方法哦

2.类和成员方法的定义语法
class 类名称:
        成员变量

        def 成员方法(self,参数列表)∶
                成员方法体
对象=类名称()

3.self的作用

  • 表示类对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • self出现在形参列表中,但是不占用参数位置,无需理会
     

二.类和对象

基于类创建对象的语法:对象名=类名称()
为什么非要创建对象才能使用呢?

类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这种套路称之为︰面向对象编程

演示

class Clock:
    id=None
    price=None
    def ring(self):
        import winsound
        winsound.Beep(2000,3000)#2000指的是频率,3000指的是响铃时间

clock1=Clock()
clock1.price=1000
print(clock1.price)
clock1.ring()

 小结

1.现实世界的事物由什么组成?

  • 属性
  • 行为

类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的

2.类和对象的关系是什么?
类是程序中的“设计图纸”
对象是基于图纸生产的具体实体

3.什么是面向对象编程?
面向对象编程就是,使用对象进行编程。
即,设计类,基于类创建对象,并使用对象来完成具体的工作

三.属性(成员变量)的赋值

演示

class Student:
    name=None
    age=None
    tel=None
    
    
student1=Student()
student1.name="张三"
student1.age=22
student1.tel="1234556"

student2=Student()
student2.name="李四"
student2.age=20
student2.tel="24523425"

上侧代码中,为对象的属性赋值需要依次进行,略显繁琐。有没有更加高效的方式,能够一行代码就完成呢?

思考: student()
这个括号,能否像函数(方法)那样,通过传参的形式对属性赋值呢?

答案是:可以,需要使用构造方法:_ _init_ _()

构造方法:_ _init_ _()

Python类可以使用:_init_()方法,称之为构造方法。可以实现:

  • 在创建类对象(构造类)的时候,会自动执行。
  • 在创建类对象(构造类)的时候,将传入参数自动传递给_ _init_ _方法使用。

演示

class Student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel

stu=Student("张三",12,"2143235")
print(stu.name)
print(stu.age)
print(stu.tel)

结果是

 注意

 红色方框中的部分可以不写

如果不写那么底下就是给成员变量进行声明

 小结

  1. 重要的事情说三遍,构造方法名称:_  _init_ _千万不要忘记init前后都有2个下划线
  2. 构造方法也是成员方法,不要忘记在参数列表中提供: self
  3. 在构造方法内定义成员变量,需要使用self关键字,这是因为︰变量是定义在构造方法内部﹐如果要成为成员变量﹐需要用self来表示。

 

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

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

相关文章

一文弄懂Pytorch的DataLoader,Dataset,Sampler之间的关系

很多文章都是从DatasetDatasetDataset等对象自下网上进行介绍的,但是对于初学者而言,其实这并不好理解,因为有时候,会不自觉的陷入到一些细枝末节中去,而不能把握重点,所以本文将自上而下的对PytorchPytorc…

HCIP第四天

HCIP实验配置一,实验要求二,172.16.0.0/16地址的划分三,搭建拓扑图四,配置IP地址和环回地址五,宣告并配置缺省路由下放,使用NAT技术六,R5中心站点配置隧道和静态IP七,R6分支站点的配…

canvas在小程序里写小游戏

最近接了个小需求需要写个小游戏,由简单的帧动画加上碰撞相关的处理,组成。具体页面信息如下图 具体的游戏步骤,是通过长按按钮蓄力,松开时卡通人物跳起,卡通人物跳起碰撞到上面的元宝等元素的得分,这里我们…

笔试题之编写SQL分析门店销售情况

销售员、客户、产品 文章目录前言一、SQL题目二、解答方法(一)建表插入测试数据(二)第一题解答(三)第二题解答(四)第三题解答总结前言 分享本人遇到的笔试真题与解法,并…

MATLAB算法实战应用案例精讲-【人工智能】语义分割(附实战应用案例及代码)

前言 语义分割是一种典型的计算机视觉问题,其涉及将一些原始数据(例如,平面图像)作为输入并将它们转换为具有突出显示的感兴趣区域的掩模。许多人使用术语全像素语义分割(full-pixel semantic segmentation),其中图像中的每个像素根据其所属的感兴趣对象被分配类别ID。…

[ XSS-labs通关宝典 ] xss-labs 通关宝典之 less1 - less5

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

前端常见问题汇总(十)

一、HTTP1.0和HTTP2.0的区别 http1.0:每次请求都需要重新建立tcp连接,请求完后立即断开与服务器连接,这很大程度造成了性能上的缺陷,http1.0被抱怨最多的就是连接无法复用。 http1.1:引入了长连接(keep-al…

麒麟系统虚拟机安装教程

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 1.首先得安装VM Ware软件。 2.打开VM Ware,点击“文件”->“新建虚拟机”。 3.进入新建虚拟机向导,点击下一步。如下图&…

API管理神器:Apifox

前言 代码未动,文档先行 其实大家都知道 API 文档先行的重要性,但是在实践过程中往往会遇到很多困难。 程序员最讨厌的两件事:1. 写文档,2. 别人不写文档。大多数开发人员不愿意写 API 文档的原因是写文档短期收益远低于付出的…

2023—静待“雨中的海棠”发芽

2023—静待“雨中的海棠”发芽认真负责、全身心的投入工作减少抱怨勤思考、多总结—>高效工作保持7*24小时在线全身心BKGWY坚持不懈多运动骑车车、练哑铃、慢跑多看书看自己喜欢的书环青海湖准备环青海湖的攻略身体上的准备内心信念的支撑最后就静待“雨中的海棠”发芽吧&am…

kali - 扫描

数据来源 Whatweb WhateWhatweb是一个基于Ruby语言的开源网站指纹识别软件,正如它的名字一样,,whate能够识别各种关于网站的详细信息,包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、 Javascript库、lP、 …

Apollo 配置中心

Apollo 配置中心目录概述需求:设计思路实现思路分析1.Apollo 配置中心2.Client端配置中心3.爬虫调度器5.Server端配置中心参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardne…

(免费分享)基于jsp,ssm甜点网站

开发工具:eclipse,jdk1.8 数据库:mysql5.7,Tomcat8.0 package com.softeem.controller;import java.util.HashMap; import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Controller; …

labelImag安装及使用教程

在做目标检测任务时,需要进行标注,选择了LabelImg作为标注工具,下面是安装及使用过程。 我们使用Anconda的虚拟环境进行安装,激活环境后,执行: pip install labelimg -i https://pypi.tuna.tsinghua.edu.c…

WebSocket 协议详述( java在线聊天室_上篇)

文章目录1、 WebSocket 协议1.1、 何为WebSocket?1.2、 websocket 和 http(应用层的俩个协议)1.3、 websocket协议的具体过程1.4、websocket好处2、 WebSocket实现2.1、 客户端实现2.1.1、 websocket对象2.1.2、 websocket事件2.1.3、 websoc…

【linux】linux中vim/vi (linux基本开发工具)

本期主题:linux中vim/vi的使用和介绍。博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限,出现错误希望大家不吝赐 目录 🍁vim键盘图 🍁vim基本概念 🍁vim的基本操作 &#x1…

Python使用库(二)

Python使用库(二) 第三方库 认识第三方库 第三方库就是别人已经实现好了的库, 我们可以拿过来直接使用. 虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界 Python 程序猿的智慧, 可以说是几乎无穷无尽. 问题来了, 当我们…

Linux驱动入门-最简单字符设备驱动(基于pc ubuntu)

一.字符设备驱动概念 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备&#xff0…

公共管理老师赴英国G5名校-伦敦大学学院CSC公派访学

CSC青年骨干教师项目的实施院校一般都要求申请人提前上报邀请函等申请材料,以进行校内遴选。为提升竞争优势,A老师希望能获得英国名校的邀请函。最终我们为其申请到英国G5名校之一的伦敦大学学院,凭借该邀请函,A老师顺利通过了本校…

【2022年终总结】勇敢追梦,去和人生博弈

目录序言刚开始的1月松懈的2月忙碌的3月迷茫的4月开源项目的5月入职汇报的6月7月8月9月假期过后的10月至关重要的11月最后冲刺的12月2022年的总结2023年的目标往年回顾序言 在刚刚过完的平安夜和圣诞节之际,同时意味着2022年要画上一个句号。这一周算是比较煎熬的几…