第九章 1 面向对象程序设计

2024-01-04

两大编程思想=面向过程和对象 p108

面向过程:功能上的封装
面向对象:属性和行为上的封装

面向过程 面向对象
区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决
共同点 1、面向过程和面向对象都是解决实际问题的一种思维方式 2、二者可以相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统,具体到微观操作,仍然使用面向过程方式来处理

自定义类和创建自定义类的对象 p109

类是怎么来的?
是由若干个对象抽取出共同的属性和行为从而归纳总结出来的一种类别

在Python中一切皆对象:
字符串对象-str字符串类型
整数对象-整数类型

a=10
b=9.1
s='hello'
print(type(a))
print(type(b))
print(type(s))

# 输出中的class就是类的意思

自定义数据类型的语法结构:

class 类名(): # 类名自取,要求首字母大写;小括号可以写也可以省略
	pass

创建对象的语法格式为:

对象名=类名()

代码实例:

# 编写一个Person
class Person():
    pass

# 编写一个Cat类
class Cat():
    pass

class Dog:
    pass

class Student():
    pass

# 类是一个抽象的模板,不是实例

# 创建类的对象
per=Person()
c=Cat()
d=Dog()
stu=Student()
print(type(per),type(c),type(d),type(stu))

类的组成 p110

1、类属性:直接定义在类中,方法外的变量
2、实例属性:定义在__init__方法中,使用self打点的变量
3、实例方法:定义在类中的函数,而且自带参数self
4、静态方法:使用装饰器@staticmethod修饰的方法
5、类方法:使用装饰器@classmethod修饰的方法

代码实例:

class Student:
    # 类属性:定义在类中,方法外的变量
    school='北京xx教育'
    # 初始化方法
    def __init__(self,name,age): # name,age是方法的参数,是局部变量,name和age作用域是整个__init__方法
        self.name=name # 左侧试实例属性,将局部变量的值赋值给实例属性
        self.age=age # 同上
    # 定义在类中的函数,称为方法,自带一个参数叫做self
    def show(self):
        print(f'我叫{self.name},今年{self.age}岁')

    # 静态方法
    @staticmethod
    def sm(): # 不会自带self,小括号中写了才会有
        print('这是一个静态方法,不能调用实例属性,也不能调用实例方法')

    # 类方法
    @classmethod
    def cm(cls): # cls是class的简写,会自动补全
        print('这是一个类方法,不能调用实例属性,也不能调用实例方法')


stu=Student('tom',17) # 对应类中的init方法,self无需写
# 实例属性,使用对象名进行打点调用
print(stu.name,stu.age)
# 类属性,使用对象名进行打点调用
print(stu.school)
# 实例方法,使用对象名进行打点调用
stu.show()
# 类方法,使用@classmethod进行修饰的方法,使用类名打点调用,注意是类名,不是实例名
Student.cm()
# 静态方法 使用@staticmethod进行修饰的方法,直接使用类名打点调用
Student.sm()

使用类模板创建N多个对象 p111

class Student:
    # 类属性:定义在类中,方法外的变量
    school='北京xx教育'
    # 初始化方法
    def __init__(self,name,age): # name,age是方法的参数,是局部变量,name和age作用域是整个__init__方法
        self.name=name # 左侧试实例属性,将局部变量的值赋值给实例属性
        self.age=age # 同上
    # 定义在类中的函数,称为方法,自带一个参数叫做self
    def show(self):
        print(f'我叫{self.name},今年{self.age}岁')

    # 静态方法
    @staticmethod
    def sm(): # 不会自带self,小括号中写了才会有
        print('这是一个静态方法,不能调用实例属性,也不能调用实例方法')

    # 类方法
    @classmethod
    def cm(cls): # cls是class的简写,会自动补全
        print('这是一个类方法,不能调用实例属性,也不能调用实例方法')


# 根据图纸创建多个对象
stu=Student('ysj',18)
stu2=Student('cmm',20)
stu3=Student('ml',21)
stu4=Student('marry',23)

# 类属性直接赋值
Student.school='Python教育'

lst=[stu,stu2,stu3,stu4]

for item in lst:
    item.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第九章 1 面向对象程序设计 的相关文章

  • 在PyGI中获取窗口句柄

    在我的程序中 我使用 PyGObject PyGI 和 GStreamer 在 GUI 中显示视频 该视频显示在Gtk DrawingArea因此我需要获取它的窗口句柄realize 信号处理程序 在 Linux 上 我使用以下方法获取该句
  • Flask中使用的路由装饰器是如何工作的

    我熟悉 Python 装饰器的基础知识 但是我不明白这个用于 Flask 路由的特定装饰器是如何工作的 以下是 Flask 网站上的代码片段 from flask import Flask escape request app Flask
  • ValueError:请使用“Layer”实例初始化“TimeDistributed”层

    我正在尝试构建一个可以在音频和视频样本上进行训练的模型 但出现此错误ValueError Please initialize TimeDistributed layer with a Layer instance You passed Te
  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 如何为未捕获的异常处理程序编写单元测试

    我有一个函数可以捕获uncaught例外情况 如下 有没有办法编写一个单元测试来执行uncaught exception handler 功能正常 但测试正常退出 import logging def config logger logge
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • python celery -A 的无效值无法加载应用程序

    我有一个以下项目目录 azima init py main py tasks py task py from main import app app task def add x y return x y app task def mul
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette
  • 为什么这个 if 语句会导致语法错误

    我正在尝试设置一个 elif 语句 如果用户按下 Enter 键 代码将继续 但是我不断遇到语法错误 GTIN 0 while True try GTIN int input input your gtin 8 number if len
  • 使用 suds SOAP 库进行 HTTP 身份验证的奇怪行为

    我有一个正在运行的 python 程序 它使用 suds 通过 SOAP 获取大量数据 Web服务是通过分页功能实现的 这样我就可以抓取nnn每个 fetch 调用的行并获取下一个nnn与后续的电话 如果我使用如下代码向 HTTP 服务器进
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • PyInstaller“ValueError:源代码字符串不能包含空字节”

    我得到了一个ValueError source code string cannot contain null bytes执行命令时pyinstaller main py在具有和不具有管理员权限的cmd中 Traceback most re
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • 寻找完美的正方形

    我有这个Python代码 def sqrt x ans 0 if x gt 0 while ans ans lt x ans ans 1 if ans ans x print x is not a perfect square return
  • 非法指令:MacOS High Sierra 上有 4 条指令

    我正在尝试在 pygame 3 6 中制作一个看起来像聊天的窗口 我刚刚将我的 MacBook 更新到版本 10 13 6 在我这样做之前它工作得很好 但在我收到消息之后 非法指令 4 Code import pygame from pyg
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col
  • Python 中的 Unix cat 函数 (cat * > merged.txt)? [复制]

    这个问题在这里已经有答案了 一旦建立了目录 有没有办法在Python中使用Unix中的cat函数或类似的函数 我想将 files 1 3 合并到 merged txt 我通常会在 Unix 中找到该目录 然后运行 cat gt merged

随机推荐

  • 设计创新,流程优化:3D开发HOOPS在数字化工厂中的多面应用

    随着科技的不断发展 数字化转型已经成为各行各业的共同趋势 而工业领域也不例外 在这一浩大的变革浪潮中 Tech Soft 3D的 HOOPS 正以其卓越的性能和多功能性 成为数字化工厂领域的关键推动力 数字化工厂概述 数字化工厂是指通过将传
  • Ontrack EasyRecovery(易恢复中国)2024专业数据文件恢复软件

    Ontrack EasyRecovery 易恢复中国 是全球著名数据厂商Kroll Ontrack出品的一款专业数据文件恢复软件 EasyRecovery数据恢复软件支持恢复不同存储介质数据 硬盘 光盘 U盘 移动硬盘 数码相机 RAID磁
  • CSS学习之路: 基础学习篇

    css基础 一 css3 概述 1 1 什么是css Cascading style sheets 层叠样式表 级联样式表 简称样式表 1 2 css作用 对页面中html元素进行美化 1 3 HTML和css的关系 HTML 负责页面结构
  • LeetCode-数组-双指针-中等难度

    文章目录 双指针 1 删除有序数组中的重复项 入门 1 1 题目描述 1 2 解题思路 1 3 代码实现 2 删除有序数组中的重复项 II 简单
  • 时间序列平稳性相关检验方法

    理解平稳性 一般来说 平稳时间序列是指随着时间的推移具有相当稳定的统计特性的时间序列 特别是在均值和方差方面 平稳性可能是一个比较模糊的概念 将序列排除为不平稳可能比说序列是平稳的更容易 通常不平稳序列有几个特征 平均值随时间推移发生变化
  • 内网穿透常用方法系列总结

    前言 在内网渗透时 一个WebShell或CobaltStrike Metasploit上线等 只是开端 更多是要内网横向移动 扩大战果 打到核心区域 但后渗透的前提是需要搭建一条通向内网的 专属通道 才能进一步攻击 可实战中因为网络环境不
  • 智康护智慧养老院建设之养老院护工的排班系统

    智康护是一种针对养老院护工的排班系统 主要目的是优化养老院护工的排班管理 提高护工工作效率并降低工作负担 下面从排班调休 人员定位 排班班次和工单申请等几个方面来阐述智康护的功能 排班调休 智康护系统可以根据养老院的护工资源和护理需求 智能
  • iOS手机查看蓝牙底层日志

    文章目录 一 需要的环境 二 在iOS设备上安装Profiles文件 三 安装Xcode 四 安装packetLogger 五 启动蓝牙数据包分析 参考文档 A New Way to Debug iOS Bluetooth Applicat
  • 用友签约新奥集团,共建智慧资产管理平台

    近日 用友成功签约新奥集团数智资产项目 项目将以数据驱动 资产创值为牵引 将全集团所有板块的资产数据按照标既定模型全面可视化展示 通过数据分析 模型沉淀 智能识别低效闲置资产 预警 赋能资产处置 盘点等事项形成处理闭环 通过数智驱动处置等活
  • 振弦采集仪在地基沉降监测中的应用研究

    振弦采集仪在地基沉降监测中的应用研究 振弦采集仪是一种专门用于测量地基沉降的仪器 它采用振弦原理来测量地基的沉降情况 振弦采集仪通过在地基上安装一根细长的弹性振弦 并测量振弦的变形来获得地基沉降的数据 在地基沉降监测中 振弦采集仪可以提供精
  • promethues grafana 安装和使用

    文章目录 1 promethues安装 2 node exporter安装 3 grafana安装 4 配置promethues监控node节点 5 grafana操作 外传 Docker 镜像下载地址 https hub docker c
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -小程序端TabBar搭建

    锋哥原创的uniapp微信小程序投票系统实战 uniapp微信小程序投票系统实战课程 SpringBoot2 vue3 2 element plus 火爆连载更新中 哔哩哔哩 bilibili uniapp微信小程序投票系统实战课程 Spr
  • LONGQLORA: EFFICIENT AND EFFECTIVE METHOD TO EXTEND CONTEXT LENGTH OF LARGE LANGUAGE MODELS

    本文是LLM系列文章 针对 LONGQLORA EFFICIENT AND EFFECTIVE METHOD TO EXTEND CONTEXT LENGTH OF LARGE LANGUAGE MODELS 的翻译 LONGQLORA 扩
  • 新规施行推动数据资产化迈出关键一步

    经济参考报 1月2日刊发文章 新规施行推动数据资产化迈出关键一步 文章称 2024年1月1日起 企业数据资源相关会计处理暂行规定 下称 暂行规定 正式施行 暂行规定 明确数据资源的确认范围和会计处理适用准则等 业内人士表示 这是推动数据资产
  • PD SINK协议芯片系列产品介绍对比-ECP5701、FS312A、CH221K、HUSB238、AS225KL

    目录 一 ECP5701 二 FS312A 三 CH221K 四 HUSB238 五 AS225KL 在如今快节奏生活不断蔓延的背景下 人们对各种事情的处理也渐渐地开始要求在保证质量的情况下 不断加快 手机快充就是一个典型的例子 从开始的1
  • 智康护智慧养老院建设之智慧视频联动解决方案

    智康护智慧养老院建设之智慧视频联动解决方案是一种基于智能技术和视频监控的创新解决方案 旨在提升养老院的安全管理和服务质量 通过视频联动实现智能化的监控和应急响应 建设背景 随着人口老龄化问题的日渐严重 养老院作为提供长期照护和安居服务的场所
  • 程序员思维——四个思考原则

    一 什么是四个思考原则 以终为始 确定好真实目标 任务分解 找到实施路径 沟通反馈 解决与人打交道出现的问题 自动化 解决与机器打交道出现的问题 二 如何运用思考框架 运用这个思考框架 我们需要问自己一些问题 Where are we 我们
  • Qt学习_17_一些关于QTableWidget的记录

    1 QTableWidget clear 程序异常退出 近日 项目中使用到QTableWidget 遇到一个问题 项目需要清空这个表格 但是无论调用clear clearContents 程序都报 程序异常退出 而且项目程序还比较多 最开始
  • prometheus grafana mysql监控配置使用

    文章目录 前传 bitnami mysqld exporter 0 15 1镜像 出现了问题 my cnf 可以用这个 prom mysqld exporter v0 15 0 镜像 重要的事情 mysql监控效果 外传 前传 promet
  • 第九章 1 面向对象程序设计

    两大编程思想 面向过程和对象 p108 面向过程 功能上的封装 面向对象 属性和行为上的封装 面向过程 面向对象 区别 事物比较简单 可以用线性的思维去解决 事物比较复杂 使用简单的线性思维无法解决 共同点 1 面向过程和面向对象都是解决实