Python系统学习1-9-类(一)

一、类之初印象

 

1、类就是空表格,将变量(列名)和函数(行为)结合起来

2、创建对象,表达具体行

3、创建类就是创建数据的模板

        --操作数据时有提示

        --还能再组合数据的行为

        --结构更加清晰

4、类的内存分配

 5、练习

"""参照day08/homework/exercise01创建餐厅类-- 变量:字典的键-- 函数:打印
"""
# 类统一了字典所有key,并提供了相关函数
class Restaurant:def __init__(self, city, name="", remark=0, money=0):self.city = cityself.name = nameself.remark = remarkself.money = moneydef display(self):print("%s在%s地区,点评人数%s,人均消费%s元." % (self.name, self.city, self.remark, self.money))# 创建对象
# --(1)根据实例变量开辟空间
# --(2)执行__init__函数
xqwct = Restaurant("北京", "星期五餐厅", 2847, 180)
tmz = Restaurant("北京","铁木真",3497,104)
print(xqwct.remark)
# 通过对象调用函数,自动将对象作为参数传递给self
xqwct.display() # display(xqwct)
tmz.display()

 二、类语法

(1)类定义

1、代码
class 类名:"""文档说明"""def __init__(self,参数):self.实例变量 = 参数def 实例方法(self,参数):pass
2、说明
        -- 类名所有单词首字母大写
        -- init 也叫构造函数,创建对象时被自动调用,也可以省略。
        -- self 变量绑定的是被创建的对象,名称可以随意 self就是对象
3、实例化
      代码:对象名 = 类名 ( 数据 )
说明:
        -- 对象名存储的是实例化后的对象地址
        -- 类名后面的参数按照构造函数的形参传递(__init__函数)

(2)实例成员

1、实例变量
定义:对象 . 变量名(self.变量名)
调用:对象 . 变量名
说明 通常在构造函数 (__init_) 中创建,首次通过对象赋值为创建,再次赋值为修改.
            每个对象存储一份,通过对象地址访问
__dict__ :对象的属性,用于存储自身实例变量的字典。
2、实例方法

         def 方法名(self,参数):

                方法体(通过“self.变量名"访问实例变量)

调用:对象名.方法名(变量)

说明:至少有一个形参,第一个参数绑定调用这个方法的对象 , 一般命名为self
           无论创建多少对象,方法只有一份,并且被所有对象共享。
# 类中self就是对象名
# 类外自己命名的为对象名
class Epidemic:def __init__(self, region):# 创建实例变量self.region = regionself.display()# 定义实例方法def display(self):print(self.region)bj = Epidemic("北京")
bj.display()# 读取实例变量
print(bj.region)
# python语言将实例变量存入字典
print(bj.__dict__)  # {'region': '北京'}# Python支持在类外创建实例变量,不建议使用
"""
class Epidemic:pass
sh = Epidemic()
sh.region = "上海" # 当前对象有此实例,其他对象无
print(sh.region)
dd = Epidemic()
# print(dd.region) 错误
"""# 建议在__init__ 中定义实例变量
"""
class Epidemic:def set_name(a, name):  # self 可以为任意命名为其他# 创建实例变量a.name = name
bj = Epidemic()
bj.set_name("北京")
print(bj.name)
print(bj)  # 打印自定义对象,输出为真实内存地址
"""
3、类实例化内存分配

 

 

 (3)跨类调用

 跨类调用语法1:直接创建对象

        语义:XX每次去东北都开一辆新车,因为Car()为局部变量

        通俗:每次用新的

class Person:def __init__(self, name):self.name = namedef driver(self):print(self.name,"驾驶去东北")car = Car()car.run()class Car:def run(self):print("骑车在行驶")lz = Person("老张")
ll = Person("老李")
lw = Person("老王")lz.driver()  # 老张驾驶新车去东北
ll.driver()  # 老李驾驶新车去东北
lw.driver()  # 老王驾驶新车去东北
lz.driver()  # 老张驾驶新车去东北
 跨类调用语法2:在构造函数中创建对象

        语义:XX每次去东北都开自己的车,__init__只执行一次

        通俗:每次用旧的

class Person:def __init__(self, name):self.name = nameself.car = Car() # 每个对象一个def driver(self):print(self.name,"驾驶去东北")# car = Car() # 多次就是多个self.car.run()class Car:def run(self):print("骑车在行驶")lz = Person("老张")  # __init__ 造车,只有一次
lz.driver()
lz.driver()

 跨类调用语法3:通过参数传递对象,建议使用

        语义:XX每次去东北都乘交通工具

        通俗:每次用的时候再选择

class Person:def __init__(self, name):self.name = namedef driver(self,vehicle):print(self.name,"驾驶去东北")vehicle.run()class Car:def run(self):print("骑车在行驶")lz = Person("老张")  # __init__ 造车,只有一次
car = Car()
# 没有定义类时,确定关系
# 而是在用类时,确定关系
lz.driver(car)

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

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

相关文章

LeetCode 778. Swim in Rising Water【最小瓶颈路;二分+BFS或DFS;计数排序+并查集;最小生成树】2096

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

目录 一、引言1.1 计算机视觉的定义1.1.1 核心技术1.1.2 应用场景 1.2 历史背景及发展1.2.1 1960s-1980s: 初期阶段1.2.2 1990s-2000s: 机器学习时代1.2.3 2010s-现在: 深度学习的革命 1.3 应用领域概览1.3.1 工业自动化1.3.2 医疗图像分析1.3.3 自动驾驶1.3.4 虚拟现实与增强现…

java面试基础 -- ArrayList 和 LinkedList有什么区别

目录 基本介绍 有什么不同?? ArrayList的扩容机制 ArrayLIst的基本使用 基本介绍 还记得我们的java集合框架吗, 我们来复习一下, 如图: 可以看出来 ArrayList和LinkedList 都是具体类, 他们都是接口List的实现类. 但是他们底层的逻辑是不同的, 相信学过这个的应该大概有…

CI+JUnit5并发单测机制创新实践

目录 一. 现状问题 二. 分析原因 三. 采取措施 四. 实践步骤 五. 效能提升 资料获取方法 一. 现状问题 针对现如今高并发场景的业务系统,“并发问题” 终归是必不可少的一类(占比接近10%),每次出现问题和事故后&#xff0c…

JVM基础了解

JVM 是java虚拟机。 作用:运行并管理java源码文件锁生成的Class文件;在不同的操作系统上安装不同的JVM,从而实现了跨平台的保证。一般在安装完JDK或者JRE之后,其中就已经内置了JVM,只需要将Class文件交给JVM即可 写好的…

Linux MQTT智能家居项目(LED界面的布局设置)

文章目录 前言一、LED界面布局准备工作二、LED界面布局三、逻辑实现总结 前言 上篇文章我们完成了主界面的布局设置那么这篇文章我们就来完成各个界面的布局设置吧。 一、LED界面布局准备工作 首先添加LED灯光控制的图标。 将选择好的LED图标添加进来: 图标可以…

SpringBoot 配置⽂件

SpringBoot 配置⽂件 1. 配置文件的作用2. .配置⽂件的格式2.1 properties2.1.1 基本语法2.1.2 读取配置⽂件 2.2 yml2.2.1 概念2.2.2 基本语法2.2.3 配置对象2.2.4 配置集合 2.3 properties 和 yml 对比 1. 配置文件的作用 整个项⽬中所有重要的数据都是在配置⽂件中配置的&a…

ubuntu安装jdk、emqx、nginx

一、安装jdk 要在Ubuntu上安装JDK 1.8,您可以按照以下步骤进行操作: 打开终端(CtrlAltT)。确保您的系统已更新: sudo apt update sudo apt upgrade安装OpenJDK 8: sudo apt install openjdk-8-jdk安装完成…

1.MySQL数据库的基本操作

数据库操作过程: 1.用户在客户端输入 SQL 2.客户端会把 SQL 通过网络发送给服务器 3.服务器执行这个 SQL,把结果返回给客户端 4.客户端收到结果,显示到界面上 数据库的操作 这里的数据库不是代表一个软件,而是代表一个数据集合。 显示当前的数据库 …

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…

@Param详解

文章目录 背景什么是ParamParam的使用方法使用方法:遇到的问题及因Param解决了什么问题使用与不使用对比 Param是如何进行映射的总结 背景 最近在开发过程中,在写mapper接口是在参数前加了Param注解,但是在运行的时候就会报错,说…

Golang 函数定义及使用

文章目录 一、函数定义格式二、函数定义及使用 一、函数定义格式 //func: 函数定义关键字 //function_name:函数名称 //parameter_List: 函数参数列表,多个时使用逗号拆分 //return_types:函数返回类型,返回多个值时使用逗号拆分…

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…

pytorch报错torch.cuda.is_available()结果false处理方法

文章目录 问题及起因问题起因 解决方法 问题及起因 问题 前几天跑项目,笔记本上的GPU可以正常跑起来。要跑VAE模型,重新安装了torch,GPU就无法使用了,我重新安装了 cuda,torch.cuda.is_available()的结果依然是False。 起因 配置项目环境…

如何使用Kali Linux进行密码破解?

今天我们探讨Kali Linux的应用,重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务,Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动,旨在通过不同的方法和工具来破解密码…

磁力线试验+多图

今天要磨制一个钢针工具。磨下来很多的铁屑,灵机一动,何不来试验一下磁铁的磁力线。这可是难得的材料。 下放7颗强力磁铁,可见强力磁铁的磁力线非常集中。 下放直径4CM的喇叭磁铁 强力磁铁U型铁 强力磁铁E型铁氧体磁芯,可见磁力线…

侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete

7 reference、const、new/delete 7.1 reference x 是整数,占4字节;p 是指针占4字节(32位);r 代表x,那么r也是整数,占4字节 int x 0; int* p &x; // 地址和指针是互通的 int& r x;…

掌握Python的X篇_30_使用python解析网页HTML

本篇将会介绍beutifulsoup4模块,可以用于网络爬虫、解析HTML和XML,对于没有接触过前端,不了解HTML是如何工作的,需要先解释一下什么事HTML。 1. HTML 网页中的各种布局等的背后都是非常简单的纯文本格式,那种格式称为…

JAVASE---数组的定义与使用

数组的基本概念 什么是数组 数组是具有相同类型元素的集合,在内存中连续存储。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号,起始位置的编号为0,即数组的下标 数组的创建及初始化 数组的创建 T[…

Kafka-eagle监控平台

Kafka-Eagle简介 在开发工作中,当业务不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:需要增加group、topic分区,此时,再使用命令行就感觉很不方便,此时&#x…