Python类与对象详解

2023-05-16

一、类和对象

类的意思:种类、分类、类别

对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就可以说成是一类,而你和选课系统不能说是一类,因此给出类的定义:类就是一系列对象相似的特征与技能的结合体。

  • 在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念

  • 既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。

  • 类:一切具有相同属性和方法的对象组成的

二、现实世界中定义类和对象

1定义对象

拿我们的选课系统来说的话,我们先总结一套现实世界中的学生对象

对象1:
    特征:
        学校 = ’xiwangzhongxue‘
        姓名 = ’小明‘
        年龄 = 18
        性别 = ’male‘
    技能:
        选课
        学习
对象2:
    特征:
        学校 = ’xiwangzhongxue‘
        姓名 = ’小红‘
        年龄 = 18
        性别 = ’male‘
    技能:
        选课
        学习

2定义类

站在未来选课系统的角度,我们还可以总结现实世界中的学生类:

希望中学学生类:
    相似的特征:
        学校='xiwangzhongxue'
    相似的技能
        选课
        学习

三、程序中定义类和对象

1定义类

曾经定义函数,函数只检测语法,不执行代码,但是定义类的时候,类体代码会在类定义阶段就立刻执行,并且会产生一个类的名称空间,也就是说类的本身其实就是一个容器/名称空间,是用来存放名字的,这是类的用途之一

定义类名时我们推荐使用驼峰体

关键字class 类名:

class Students:
    # 定义对象相同的属性
    shool = 'xiwangzhongxue'
    
    # 定义对象想的方法
    def choice(self):
        print('选课。。。。')
        
    def study(self):
        print('学习。。。。')

使用类

  • 类名()
  • Student()

2定义对象

调用类即可产生对象,调用类的过程,又称为类的实例化,实例化的结果称为类的对象/实例

对象名 = 类名()

stu1 = Student() # 这个时候只是生成了一个对象stu1,对象本身没有任何属性
print(stu1) # 打印的只是stu1对象在定义的时候生成的内存地址

<main.Student object at 0x000001EE24F2C198>

四、类和对象的使用

1获取类的属性和方法

  • __dict__方法

  • 返回的时一个字典(文件执行的模式、属性,方法(函数)的地址)

print(Student.__dict__)

{'module': 'main', 'school': 'oldboy', 'func1': <function Student.func1 at 0x000001EE25195620>, 'func2': <function Student.func2 at 0x000001EE2C0C59D8>, 'dict': <attribute 'dict' of 'Student' objects>, 'weakref': <attribute 'weakref' of 'Student' objects>, 'doc': None}

2获取对象的属性和方法

  • __dict__方法
  • 返回是个字典
print(stu1.__dict__) # 返回的是一个空的字典,因为我们在定义这个stu1对象的时候,没有给它定义其他的属性

{}

3类使用方法和对象使用类的方法的区别

类使用方法

  • 其实就是在调用函数
  • 类使用方法时,调用类的方法的时候必须向函数方法传进对应的参数
Student.choice(stu1) # 函数的第一个参数则是定义的对象名

选课。。。。

对象使用类的方法

  • 调用类里的方法
  • 对象使用方法时,调用类不需要向方法传第一个参数
stu1.choice():

选课。。。。

五、对象的属性赋值

1通过对象自身来赋值属性

stu1.name = '小明'
print(stu1.__dict__)# 返回一个字典,字典包含的是对象自己的属性集合
print(stu1.name) # 返回对象自己name的属性

{'name''小明'}

小明

2通过类中的__init__的方法

# 定义一个学生类
class Student:
    # 定义类的相同属性
    school = '希望中学'

    # 定义类的相同方法
    # 定义类的属性方法
    def __init__(self,name):
        self.name = name

    def choice(self):
        print('选课...')

    def study(self):
        print('学习....')
        
 
# 实例化一个对象
stu1 = Student('小明')# ()括号里传的是对象stu2的name属性值为'小明'
print(stu1.__dict__)# 打印对象stu1的属性集合
print(stu1.name)# 打印stu1的name的属性值

废了嘛?

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

Python类与对象详解 的相关文章

  • Elasticsearch系列-Elasticsearch集群工作原理

    引言 ELasticsearch作为一个分布式搜索引擎 xff0c 能够出色地支持集群模式 动态水平扩容 故障转移等分布式系统特性 xff0c 这是其作为全文搜索引擎首选的重要原因 本文从零开始描述集群的配置和扩容过程 xff0c 让你对E
  • Elasticsearch系列-集群API(一)

    引言 Elasticsearch提供了大量了的Rest API用以操作Elastic search的相关功能 xff0c 提供了极大的便利 xff0c 掌握这些API是熟练地使用Elasticsearch的前提 Elastic search
  • JVM系列-CPU使用率高问题排查方法

    引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题 xff0c 那么应该如何排查问题的原因呢 xff0c 本文大概描述一下排查方法 一 排查占用CPU的进程 使用top命令 xff0c 在大写打开的情况下按P键或者在大写没有打开
  • python判断list中的值是否完全一样

    对于一个python的list a span class token operator 61 span span class token punctuation span span class token number 1 span spa
  • 生产问题排查-SSLException:Unrecognized SSL message,plainetxt connection异常排查

    引言 最近在一次生产问题中遇到了SSLException Unrecognized SSL message plainetxt connection错误异常信息 xff0c 背景为调用微信api 获取相应信息的时候报错 xff0c 微信ap
  • 【云原生】本地搭建Openshift单机最小化开发环境

    文章目录 一 什么是CodeReady Container xff08 CRC xff09 xff1f 二 本地化部署CodeReady Container三 Code Ready Container的使用 公众号 xff1a MCNU云原
  • 手把手kubernetes本地化部署(含疑难杂症排查解析)

    文章目录 一 什么是Kubernetes xff1f 二 Kubernetes的基本概念PodDeploymentServiceNamespaceConfigMapSecret 三 Kuberntes单机本地部署3 1 安装minikube
  • chatGPT大规模使用kubernetes,云原生技术在AI领域也大有可为

    文章目录 一 云原生在AI领域的应用方向1 1 弹性部署1 2 自动化和可维护性1 3安全性和隔离性 二 云原生在AI领域的应用案例2 1 chatGPT全面使用云原生技术2 2 TensorFlow Serving和k8s及docker的
  • 数据清洗经验

    平时习惯了在某些特定的数据集合上做实验 xff0c 简单的tokenization 预处理等步骤就足够了 但是在数据越来越大的年代 xff0c 数据清洗越来越重要 xff0c 也越来越复杂 看到Philip J Guo 的这篇英文文章 Pa
  • Jetson Nano平台常用软件工具

    本文介绍几个Jetson Nano平台常用的小工具 1 jtop jtop可以查看Jetson Nano目前CPU工作负载情况 xff0c 当前温度等信息 安装方法 xff1a sudo apt get install python pip
  • 如何计算前缀,网络,子网和主机号?

    计算网络掩码长度 xff08 也称为前缀 xff09 xff1a 将网络掩码的点分十进制表示形式转换为二进制 然后 xff0c 从第一个八位位组的最高有效位 xff08 即二进制数的左侧 xff09 开始 xff0c 计算连续的1位的数目
  • Pascal's Triangle(帕斯卡三角形)

    题目 xff1a Given numRows generate the first numRows of Pascal 39 s triangle xff08 杨辉三角 xff09 For example given numRows 61
  • kubernetes集群calico网络部署

    kubernetes 集群 calico 网络部署 一 部署环境及架构 操作系统 ubuntu 14 04 Kubernetes 1 3 5 Etcd 版本 2 2 1 Docker 版本 1 1 0 1 calicoctl 版本 xff1
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是
  • python正则匹配中文/英文/数字/其它字符

    匹配提取 一些字符串既包含中文 也包含英文 数字等 xff0c 需要对这类字符串做提取 xff0c 单个中文字符 英文单词以及数字表达等 需要采用正则匹配的方式来做 比如对于如下针对数据的描述 Android IOS 2条装 xff08 0
  • OVS和OVN 2.8新功能

    OVS和OVN 2 8新功能 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方文档 本文档主要是关于2017年8月底发布的Open vSwitch 2 8中添加的内容 xff0c 重点介绍OVN中的
  • OSPF基础

    OSPF 1 ospf天生无环 是因为使用了SPF算法 该算法的概述是 选择一条花费最少而且没有环路的路径 2 ospf里有三张表 a 邻居表 ospf使用hello报文来发现并维持邻居关系 使用ospf的路由器每10s向相连的路由器发送h
  • OSPF状态机

    1 状态down 进程刚刚开始 路由器发送hello包 2 状态attempt 只出现在NBMA网络类型中 指路由器尽最大的努力去建立邻居 每隔hello间隔就发送hello包 但是还是未收到对方的hello包 2 状态init 路由器收到
  • OSPF分组类型

    1 hello包 目的地址永远是224 0 0 5 ip层协议号是89 包含了 1 唯一标识自己的RID 2 所属的区域AREA 3 hello间隔 死亡时间 缺省10 40 4 DR和BDR的RID 5 接口优先级 6 网络类型 7 验证
  • BGP基础详解

    BGP 边界网关协议 公有AS号 1 64511 私有AS号 64512 65535 状态机 1 idle 空闲 这时候刚刚指定邻居 邻居一定要可达 通过IGP或者静态路由 用loopback接口要注意更新源 ebgp邻居要写多跳

随机推荐

  • STP基础

    交换机使用专用集成电路ASIC来创建并维护其过滤表 cisco交换机上没有aux端口 交换机不需要任何IP 给交换机设置IP纯粹是为了管理的需要 1 交换网络一般分为三个层次 接入层 分布层 核心层 其中 接入层接入用户 分布层做各种流量策
  • VLAN基础

    1 默认时 交换机分割冲突域 路由器分割广播域 默认时 路由器过滤广播 交换机转发广播到所有网段 默认时 交换机上所有端口都是VLAN1的成员 VLAN1是管理VLAN 不能删除和修改 每个VLAN就是一个广播域 如果想要实现VLAN之间的
  • DHCP snooping

    一 采用DHCP服务的常见问题 架设DHCP服务器可以为客户端自动分配IP地址 掩码 默认网关 DNS服务器等网络参数 xff0c 简化了网络配置 xff0c 提高了管理效率 但在DHCP服务的管理上存在一些问题 xff0c 常见的有 xf
  • 组播技术架构

    组播基础 span class hljs attribute 1 保留的组播地址 224 0 0 1 224 0 0 255 公网上的组播地址 224 0 1 0 238 255 255 255 私网上的组播地址 239 0 0 0 239
  • python中的三元运算符

    python中没有类似java或c 43 43 中的 三元运算符 xff0c 如果想用类似的结构 xff0c 可以用if else来代替 x span class token operator 61 span span class toke
  • 关于派生类构造函数与基类构造函数的调用顺序问题

    面向对象程序设计基础 xff08 第二版 李师贤等 xff0c 第254页 xff1a C 43 43 语言的基本规则是 xff1a 创建一个派生类的对象时 xff0c 如果基类带有构造函数 xff0c 则先调用基类的构造函数 xff0c
  • C++中的strrev函数

    C 43 43 中的strrev函数 C 43 43 中有函数strrev xff0c 功能是对字符串实现反转 xff0c 但是要记住 xff0c strrev函数只对字符数组有效 xff0c 对string类型是无效的 具体见下面代码 x
  • 工厂模式(Factory Pattern)

    Java工厂模式 xff08 Factory Pattern xff09 是一种创建型设计模式 xff0c 它提供了一个通用的接口来创建对象 xff0c 但允许子类决定实例化哪个类 这种模式通过将对象的创建委托给工厂类来实现 xff0c 从
  • Java建造者模式(Builder Pattern)

    ava建造者模式 xff08 Builder Pattern xff09 是一种创建型设计模式 xff0c 它将对象的构建过程分离出来 xff0c 使得可以使用相同的构建过程来创建不同的对象表示形式 建造者模式通常用于创建复杂的对象 xff
  • Can‘t uninstall ‘scipy‘. No files were found to uninstall.以及scipy安装问题解决方法

    ubuntu系统下使用pip uninstall scipy命令卸载包时 遇到报错信息为 Found existing installation span class token operator span scipy span class
  • Package ‘libssl1.0.0‘ has no installation candidate

    安装libssl1 0 0失败 xff0c 问题 xff1a Package libssl1 0 0 has no installation candidate 解决方法 xff1a sudo apt get install build e
  • IDR 学习笔记

    Multiview Neural Surface Reconstruction by Disentangling Geometry and Appearance 主页 xff1a https lioryariv github io idr
  • Debian 11 驱动问题解决方法

    Debian 11 驱动问题解决方法 前言问题解决方法升级内核安装 Firmware Linux 前言 下面是作者在安装时的系统版本和无法驱动的硬件信息 xff1a Debian 镜像 xff1a debian 11 6 0 amd64 D
  • 使用windows引导的ubuntu双操作系统

    避坑指南 bios 取消安全boot 安全启动 快速启动 报rst错误的 把 bois 里的 SATA config 把inter 改为ahci 没报请无视 作为码农 xff0c 总会时不时的需要使用linux的开发环境 xff0c 使用虚
  • 想听一首歌好难?程序员教你一键下载

    1 首先要先安装一下Python第三方库 requests pip install requestsprettytable pip install PrettyTable 2 使用的开发环境 xff1a 版 本 xff1a python 3
  • 圣诞要到了~教你用Python制作一个表白神器——照片墙,祝你成功

    马上圣诞节 xff0c 快到了 xff01 又到了一年一度表白的时候了 今天教你一个程序员方式的表白 xff01 看一下效果图 xff1a 要什么样的 xff0c 图案都可以自定义的 首先 xff0c 准备阶段 收集你喜欢人 xff08 或
  • python字典遍历

    对python中的字典进行遍历操作 a span class token operator 61 span span class token punctuation span span class token punctuation spa
  • python读取文件指定行的三种方法

    1 行遍历实现 在python中如果要将一个文件完全加载到内存中 xff0c 通过file readlines 即可 xff0c 但是在文件占用较高时 xff0c 我们是无法完整的将文件加载到内存中的 xff0c 这时候就需要用到pytho
  • Python中五种方式拼接字符串的正确方法

    在学习Python xff08 3x xff09 的过程中 xff0c 在拼接字符串的时候遇到了些问题 xff0c 所以抽点时间整理一下Python 拼接字符串的几种方式 方式1 使用加号 43 连接 使用加号连接各个变量或者元素必须是字符
  • Python类与对象详解

    一 类和对象 类的意思 xff1a 种类 分类 类别 对象是特征与技能的结合体 xff0c 我可能有身高体重 而你也有身高体重 xff0c 所以你会说你像我 xff0c 但是你一定不会说你像阿猫阿狗 并且我和你其实就可以说成是一类 xff0