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/71117.html

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

相关文章

【深度学习 | 感知器 MLP(BP神经网络)】掌握感知的艺术: 感知器和MLP-BP如何革新神经网络

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

iPhone(iPad)安装deb文件

最简单的方法就是把deb相关的文件拖入手机对应的目录,一般是DynamicLibraries文件夹 参考:探讨手机越狱和安装deb文件的几种方式研究 1、在 Mac 上安装 dpkg 命令 打包 deb 教程之在 Mac 上安装 dpkg 命令_xcode打包root权限deb_qq_34810996的博客-CS…

Android上架商城 隐私政策需要网页 没有怎么办

Android开发的项目上架商城的时候会需要你填写url,但其实并不需要真的去发布一个网站 使用腾讯文档新建文档 填写隐私政策 点击生成网页 再将网址填写即可 下面我找到的一个隐私政策文档供大家参考 将XXXX应用一键替换为自己的应用 将XXXXXX公司一键替换为公司 …

.Net Core 动态加载和卸载程序集

从 .Net Core 3.0开始支持程序集的加载和卸载,在 .Net FrameWork中使用独立的应用程序域来实现同样的功能,.Net Core 不支持创建多个应用程序域,所以无法使用多个应用程序域来实现程序集动态加载和卸载。 AssemblyLoadContext 程序集加载上下…

07- RTC实时时钟

RTC实时时钟 RTC实时时钟RTC时钟来源:RTC的特征:简化的RTC框图及原理简介:RTC由两部分组成:RTC相关库函数:库函数的讲解和使用:RTC配置步骤: 示例 RTC实时时钟 RTC时钟来源: RTC的特…

Jmeter-压力测试工具

文章目录 Jmeter快速入门1.1.下载1.2.解压1.3.运行 2.快速入门2.1.设置中文语言2.2.基本用法 Jmeter快速入门 1s内发送大量请求,模拟高QPS,用以测试网站能承受的压力有多大 Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK&#xff0…

WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以

本地验证时重定向iperf包有出现calltrace错误&#xff0c;经推断&#xff0c;系统PAGE_SIZE<8k时可能出现&#xff08;getconf PAGE_SIZE指令可查看&#xff09;&#xff0c;按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次&#xff0c;需要将加载…

RabbitMQ启动服务报错1067解决方案

首先&#xff1a; 你的 Erlang正确下载安装&#xff0c;且配置完成环境变量&#xff0c;可在命令行键入erl&#xff0c;若显示erlang版本则说明环境变量配置成功。如下&#xff1a; 原因分析&#xff1a; 1. 电脑名称为中文 2. erlang和rabbitmq版本不匹配 3. 安装目录有空格…

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

关于git执行提交报错问题

1.在执行git中 执行git init 执行 git add . 执行git commit -m “first commit” 时会出现 git config --global user.email "youexample.com" git config --global user.name "username" 这个问题是由于在git中没有设置默认的user跟emali导致需要手…

SwiftUI 动画进阶:实现行星绕圆周轨道运动

0. 概览 SwiftUI 动画对于优秀 App 可以说是布帛菽粟。利用美妙的动画我们不仅可以活跃界面元素,更可以单独打造出一整套生动有机的世界,激活无限可能。 如上图所示,我们用动画粗略实现了一个小太阳系:8大行星围绕太阳旋转,而卫星们围绕各个行星旋转。 在本篇博文中,您将…

第三届“赣政杯”网络安全大赛 | 赛宁筑牢安全应急防线

​​为持续强化江西省党政机关网络安全风险防范意识&#xff0c;提高信息化岗位从业人员基础技能&#xff0c;提升应对网络安全风险处置能力。由江西省委网信办、江西省发展改革委主办&#xff0c;江西省大数据中心、国家计算机网络与信息安全管理中心江西分中心承办&#xff0…