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.hqwc.cn/news/70025.html

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

相关文章

ChatGPT爆火,会给教育带来什么样的影响或者冲击?

近来,人工智能聊天机器人ChatGPT连上热搜,火爆全网。ChatGPT拥有强大的信息整合能力、自然语言处理能力,可谓是“上知天文,下知地理”,而且还能根据要求进行聊天、撰写文章等。 ChatGPT一经推出,便迅速在社…

c#设计模式-结构型模式 之 桥接模式

前言 桥接模式是一种设计模式,它将抽象与实现分离,使它们可以独立变化。这种模式涉及到一个接口作为桥梁,使实体类的功能独立于接口实现类。这两种类型的类可以结构化改变而互不影响。 桥接模式的主要目的是通过将实现和抽象分离,…

迅捷视频工具箱:多功能音视频处理软件

这是一款以视频剪辑、视频转换、屏幕录像等特色功能为主,同时附带有视频压缩、视频分割、视频合并等常用视频处理功能为主的视频编辑软件。该软件操作简单易用,即使没有视频处理经验的用户也可以轻松上手。将视频添加到工具箱对应功能后,简单…

Ogami Organic Store有机商店WordPress主题

Ogami Organic Store有机商店WordPress主题是一个整洁且响应迅速的 WooCommerce WordPress 主题,适用于任何类型的食品、蔬菜店、化妆品或类似网站,这些网站需要功能丰富且美观的在线展示以及优雅灵活的设计。 网址: Ogami Organic Store有机商店WordPr…

【Java基础】Java对象的生命周期

【Java基础】Java对象的生命周期 一、概述 一个类通过编译器将一个Java文件编译为Class字节码文件,然后通过JVM中的解释器编译成不同操作系统的机器码。虽然操作系统不同,但是基于解释器的虚拟机是相同的。java类的生命周期就是指一个class文件加载到类…

Python文件操作与输入输出:从基础到高级应用

文章目录 🍀引言🍀文件操作基础🍀上下文管理器与文件自动关闭🍀文件的迭代与逐行读取🍀文件的其他常见操作🍀输入输出基础🍀 文件输入输出🍀格式化输出🍀高级文件操作&am…

# 快速评估立功科技基于S32K324的TMS方案

文章目录 1.前言2.立功科技的TMS方案介绍2.1 介绍资料2.2 简要介绍 3.S32K3_TriMotor评估板测试3.1 环境搭建S32 Design Studio for S32 Platform 3.4安装RTD 2.0.0安装Freemaster 3.2 3.2 例程测试3.3 例程适配3.4 双核烧录3.5 测试 1.前言 最近和一些做汽车水泵/风机的客户交…

数据可视化和数字孪生相互促进的关系

数据可视化和数字孪生是当今数字化时代中备受关注的两大领域,它们在不同层面和领域为我们提供了深入洞察和智能决策的机会,随着两种技术的不断融合发展,很多人会将他们联系在一起,本文就带大家浅谈一下二者之间相爱相杀的关系。 …

mac录屏工具,录屏没有声音的解决办法

mac录屏工具,录屏没有声音的解决办法 在使用macbook录制屏幕时,发现自带的录屏工具QuickTime Player没有声音,于是尝试了多款录屏工具,对其做一些经验总结(省流:APP Store直接可以免费下载使用Omi录屏专家…

vue2+Spring Boot2.7 大文件分片上传

之前我们文章 手把手带大家实现 vue2Spring Boot2.7 文件上传功能 将了上传文件 但如果文件很大 就不太好处理了 按正常情况甚至因为超量而报错 这里 我弄了个足够大的文件 我们先搭建 Spring Boot2.7 环境 首先 application.yml 代码编写如下 server:port: 80 upload:path:…

C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】

wpf iconfont 外部图标引入&#xff0c;无法正常显示问题。 1. 检查资源路径和引入格式是否正确2. 检查资源是否包含在程序集中 1. 检查资源路径和引入格式是否正确 正确的格式&#xff0c;注意字体文件 “xxxx.ttf” 应写为 “#xxxx” <TextBlock Text"&#xe7ae;…

21、stm32使用LTDC驱动LCD

注&#xff1a;本文基于stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)工程继续开发 本例使用安富莱的H743XIH板子驱动LTDC点亮7寸LCD 硬件接线&#xff1a;RGB888 一、cubemx配置 1、LTDC配置 注意此引脚应于上面的硬件接线图一致 2、配置DMA2D 3、背光引脚和触摸引脚 4、时钟…