十、面向对象基础

文章目录

  • 学习目标
  • 一、面向对象介绍
  • 二、类和对象
    • 2.1 类
    • 2.2 对象
    • 2.3 类的设计
    • 2.4 self语句的使用
  • 三、魔法方法
    • 3.1 对象操作的魔法方法
    • 3.2 运算符相关的魔法方法
  • 四、内置属性
    • 4.1 把对象当做一个字典使用
  • 五、类属性和对象(实例)属性
  • 六、私有属性和方法

学习目标

  • 说出面向对象和面向过程的特点
  • 能够使用dir内置函数查看对象的方法
  • 能够使用类创建对象
  • 能够说出self的含义
  • 能够说出魔法方法什么时候调用
  • 能够说出内置属性的作用
  • 能够说出实例属性和类属性的区别
  • 能够定义和操作使用属性

一、面向对象介绍

  • 面向过程:根据业务逻辑从上到下写代码
  • 面向对象:将 变量与函数 绑定到一起,分类进行封装,每个程序只负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码

二、类和对象

  • 对象是面向对象编程的两个核心概念

2.1 类

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用

  • 特征其实就是一个变量,在类里我们称之为属性
  • 行为其实就是一个函数,在类里我们称之为方法
  • 类其实就是由 属性方法 组成的一个抽象概念

2.2 对象

对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的 对象,就拥有在哪一个类中定义的属性和方法

2.3 类的设计

在程序开发中,要设计一个类,通常需要满足一下三个要素:

  1. 类名 这类事物的名字,按照大驼峰命名法(每个单词的首字母大写)起名
  2. 属性 这类事物具有什么样的 特征
  3. 方法 这类事物具有什么样的 行为
# 定义类:class关键字
# class 类名:类名按照大驼峰命名法(每个单词的首字母大写)起名
# 1. class <类名>
# 2. class <类名>(object)class Student(object):def __init__(self,name,age,height): # 在 __init__ 方法里,以参数的形式定义属性self.name = nameself.age = ageself.height = heightdef run(self):print('正在跑步')def eat(self):print('正在吃东西')# 使用 Student类 创建了两个实例对象 s1 s2
# s1和s2都会有name,age,height属性,同时都有run和eat方法
s1 = Student('小明',18,1.8)
s2 = Student('小美',19,1.65)

2.4 self语句的使用

class Student:# 这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性,可以限制动态属性的设置__slots__ = ('name','age')def __init__(self,x, y):self.name = xself.age = y
# Student('张三',18) 这段代码具体做了什么呢?
# 1. 调用 __new__ 方法,用来申请s内存空间
# 2. 调用 __init__ 方法传入参数,并让 self 指向申请好的那段内存空间,填充数据
# 3. 变量 s1 也指向创建好的这段内存空间
s1 = Student('张三', 18)# 直接使用等号给一个对象的属性赋值
# 如果这个属性以前不存在,会给对象添加一个新的属性
# 动态属性
s.city = '上海' # 给对象添加了一个city属性# 如果这个属性以前存在,会修改这个属性
s.name = 'jack'

三、魔法方法

3.1 对象操作的魔法方法

# 魔法方法,也叫魔术方法,是类里的特殊的一些方法
# 特点
# 1. 不需要手动调用,会在合适的时机自动调用
# 2. 这些方法,都是是使用 __ 开始,使用 __ 结束
# 3. 方法名都是系统规定好的,在合适的实际自己调用class Person(object):# __init__ 魔法方法在创建对象时,会自动调用这个方法def __init__(self,name,age

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

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

相关文章

Visual Studio Code 实现远程开发

Background 远程开发是指开发人员在本地计算机上进行编码、调试和测试&#xff0c;但实际的开发环境、代码库或应用程序运行在远程服务器上。远程开发的实现方式多种多样&#xff0c;包括通过SSH连接到远程服务器、使用远程桌面软件、或者利用云开发环境等。这里我们是使用VSCo…

1.虚拟机相关的博文推荐

虚拟机的安装&#xff1a; 在VMware中安装CentOS7&#xff08;超详细的图文教程&#xff09;_vm安装centos7-CSDN博客 虚拟机的网络配置&#xff1a; 【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法-CSDN博客

【操作系统】文件管理——文件共享与保护,文件系统的结构(个人笔记)

学习日期&#xff1a;2024.7.18 内容摘要&#xff1a;文件共享&#xff0c;文件保护&#xff0c;文件系统的层级结构和全局结构&#xff0c;虚拟文件系统 文件共享 操作系统提供的文件共享功能&#xff0c;可以让多个用户共享使用同一个文件。文件共享和文件复制是不一样的&a…

蜣螂算法(BSO)及Python和MATLAB实现

蜣螂算法&#xff08;Beetle Swarm Optimization Algorithm&#xff0c;BSO&#xff09;是一种启发式优化算法&#xff0c;受到昆虫领域中蜣螂群体的启发而提出。蜣螂算法模拟了蜣螂在搜索食物时的协作行为和集体智慧&#xff0c;旨在解决复杂优化问题。通过模拟蜣螂之间的信息…

python ATM实现

代码要求&#xff1a; 详细代码&#xff1a; money 50000000 name input("输入您的姓名 &#xff1a;")#查询功能 def search(show_header):if show_header:print("--------查询余额--------")print(f"{name}&#xff0c;您好&#xff0c;您的余额…

gitlab新建仓库

总贴 每个git网站都有不同的创建项目的方式&#xff0c;现在举例gitlab&#xff0c;其他例如gitee&#xff0c;gitcode&#xff0c;都是差不多的&#xff0c;自行百度 1![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dae875d9048940c0aeb292c07d6a4a62.png)1和2是项…

简约的悬浮动态特效404单页源HTML码

源码介绍 简约的悬浮动态特效404单页源HTML码,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head><meta charset="utf-8&q…

matlab 异常值检测与处理——Robust Z-score法

目录 一、算法原理1、概述2、主要函数3、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠翻译,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、概述 Robust Z-score法也被称为中位数绝对偏差法。它类似于Z-sc…

Hive修改表中的某个值

Hive要修改表中的某个值&#xff0c;如何实现&#xff1f; Hive是一个数据仓库工具&#xff0c;它提供了数据的静态查询功能&#xff0c;而不能处理在线事务。Hive不支持传统的Update、Delete操作。如果需要修改表中的某个值&#xff0c;可以尝试以下两种方案&#xff1a; 1、…

WebRTC音视频-前言介绍

目录 效果预期 1&#xff1a;WebRTC相关简介 1.1&#xff1a;WebRTC和RTC 1.2&#xff1a;WebRTC前景和应用 2&#xff1a;WebRTC通话原理 2.1&#xff1a;媒体协商 2.2&#xff1a;网络协商 2.3&#xff1a;信令服务器 效果预期 1&#xff1a;WebRTC相关简介 1.1&…

排序算法(4)之快速排序(2)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序算法(4)之快速排序(2) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

第一篇:VUE介绍

1、概念: 是一款用于构建用户界面的js框架,基于html、css、js构建,提供了一套声明式的、组件化的编程模型。目前由于使用vue开发的组件繁多,已然形成了一个vue生态。 2、特点: 1)渐进式框架:使用者可以根据需要引入框架的部分功能,逐步增强,而不是一开始就引入全部…

剧本杀小程序搭建,为商家带来新的收益方向

近几年&#xff0c;剧本杀游戏成为了游戏市场的一匹黑马&#xff0c;受到了不少年轻玩家的欢迎。随着信息技术的快速发展&#xff0c;传统的剧本杀门店已经无法满足游戏玩家日益增长的需求&#xff0c;因此&#xff0c;剧本杀市场开始向线上模式发展&#xff0c;实现行业数字化…

linux中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

汽车免拆诊断案例 | 卡罗拉急加速抖动故障排除

车型信息 2017年改款卡罗拉&#xff0c;排量1.2T&#xff0c;行驶里程48800公里。 故障现象 车辆不管在什么状态下&#xff0c;只要是平缓加速&#xff0c;都不会有抖动。车辆静止时&#xff0c;急加速时&#xff0c;也不会有抖动。但是车速达40公里/小时以上&#xff0c;急加…

【python基础】基本数据类型

文章目录 一. Python基本数据类型1. 整数1.1. python的四种进制1.2. 数中的下划线 2. 浮点数3. 复数4. 布尔型5. 运算符5.1. 算术运算符5.2. 比较运算符5.3. 逻辑运算符5.4 运算符优先级 6. 常量 二. 注释三. Python之禅 一. Python基本数据类型 1. 整数 无长度限制&#xff1…

基于深度学习的人脸表情识别系统

1. 引言 详细内容&#xff1a; 人脸表情识别在很多应用领域中有着重要的作用&#xff0c;比如情绪分析、心理健康监测、人机交互等。基于深度学习的方法可以显著提高人脸表情识别的准确性。YOLO&#xff08;You Only Look Once&#xff09;系列模型在实时目标检测中表现优异&…

PWM再理解(1)

前言 昨天过于劳累&#xff0c;十点睡觉&#xff0c;本来想梳理一下PWM&#xff0c;今天补上。 PWM内涵 PWM全称&#xff1a;Pulse Width Modulation&#xff0c;也就是脉宽调制的意思&#xff0c;字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…

怎样优化 PostgreSQL 中对复杂的日期时间格式转换和时区处理?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样优化 PostgreSQL 中对复杂的日期时间格式转换和时区处理&#xff1f; 怎样优化 PostgreSQL 中对复…

Python | Leetcode Python题解之第257题二叉树的所有路径

题目&#xff1a; 题解&#xff1a; class Solution:def binaryTreePaths(self, root: TreeNode) -> List[str]:paths list()if not root:return pathsnode_queue collections.deque([root])path_queue collections.deque([str(root.val)])while node_queue:node node_…