python中的类和对象的讲解

Tlsr8258开发-程序烧写 开源一小步,进步一大步 阅读详情

面向对象的编程语言

   -关注的是对象,而不关注过程
   -对于面向对象的语言来说,一切都是对象
   -例子:孩他妈叫孩子起床(不需要再指挥妈妈的起床到送孩子上学之间的每个步骤了)
   -面向对象的编程思想,将所有的功能统一保存到对应的对象中
   	比如,妈妈的功能保存到妈妈的对象中,孩子的功能保存到孩子的对象中
	要使用某个功能,直接找到对应的对象即可

类(class)

我们当前所学的对象都是Python的内置对象
但是内置对象并不能满足我们所有的需求,所以我们在开发中经常需要自定义一些对象
类是对象的图纸,在程序中要根据类来创建对象
我们也称对象时类的实例(instance)
通过同一个类创建的多个对象,我们称这些对象是一类对象
像int()、float()、str()、list()、dict() .......这些都是类
我们自定义的类都需要使用大写字母开头,使用驼峰命名法来对类命名

类也是一个对象。
类就是一个用来创建对象的对象。
类是type类型的对象,定义类实际上就是定义了一个type类型的对象。
a = int(10)  # 创建一个int类型的实例 等价于 a = 10
b = str('abc')  # 创建一个str类型的实例 等价于 a ='abc'
print(a, type(a))  # 10 <class 'int'>
print(b, type(b))  # 10 <class 'str'>

使用类创建对象的过程

1.创建一个变量mc
2.在内存中创建一个新对象
3.__init__(self)方法执行
4.将对象的id赋值给变量
#定义一个MyClass类
class MyClass:
    pass


print(MyClass)  # <class '__main__.MyClass'>
# 使用MyClass创建一个对象
mc = MyClass()  # mc是MyClass的实例
mc2 = MyClass()
mc3 = MyClass()
# mc mc2 mc3 都是MyClass的实例。它们都是同一类对象
# isinstance()用来检查一个对象是否是一个类的实例
result = isinstance(mc, MyClass)  # True
print(result)
print(mc, type(mc))

# 现在我们通过Myclass这个类创建的对象都是一个空对象。
# 也就是对象中实际上什么都没有,就相当于是一个空盒子
# 可以向对象中添加变量,对象中的变量称为属性
# 语法:对象.属性 = 属性值
mc.name = 'swk'
print(mc.name)

在这里插入图片描述

类的定义

 - 类和对象都是对现实生活中事物或程序中的内容的抽象
   - 实际上所有的事物都由两部分构成:
   	1.数据(属性)
   	2.行为(方法)

   - 在类的代码块中我们可以定义变量和函数
   	变量会成为该实例的公共属性,所有的该类实例都可以通过对象.属性名 的形式访问
	函数会成为该类实例的公共方法, 所有该类实例都可以通过对象.方法名() 的形式调用方法

   - 注意:
   	方法调用时,第一个参数由解析器自动传递,所以定义方法时,至少要定义一个形参!

   -实例为什么可以访问到类中的属性和方法
   	类中定义的属性和方法都是公共的,任何该类的实例都可以访问

	- 属性和方法查找的流程
	    当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,
	    	如果有,则直接返回当前的对象的属性值
	    	如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值,
		如果上述两个地方都没有,则报错!
	
	- 类对象和实例对象中都可以保存属性(方法)
	    -如果这个属性(方法)是所有的实例共享的,则应该将其保存到类对象中
	    -如果这个属性(方法)是某个实例独有,则应该将其保存到实例对象中
	
	- 一般情况下,属性保存到实例对象中
	  而方法需要保存到类对象中
# 尝试定义一个表示人的类
class Person:
    # 在类的代码块中,我们可以定义变量和函数
    # 在类中我们所定义的变量,将会成为所有的实例的公共属性
    # 所有实例都可以访问这些变量
    name = 'swk'  # 公共属性  所有的实例都可以访问

    # 在这个类中也可以定义函数,类中的定义的函数,我们称为方法
    # 这些方法可以通过该类的实例来访问
    def say_hello(self):  # 必须要由至少一个形参,否则报错,建议第一个形参命名为self
        # 方法每次被被调用时,解析器都会自动传递第一个实参
        # 第一个参数,就是调用方法的对象本身
        #   如果是p1调的,则第一个参数就是p1对象
        #   如果是p2调的,则第一个参数就是p2对象
        # 一般我么都会将这个参数命名为self
        print('你好! 我是 %s' % self.name)
        # print('你好! 我是 %s' %name)#不能这样写,因为在方法中不能直接访问类中的属性


# 创建Person的实例
p1 = Person()
p2 = Person()

print(p1.name)  # swk  #表示读取p1对象的name,如果p1对象有此属性,则返回p1对象的此属性值,如果没有此属性,就去类对象中去找此属性,如果类对象中有,则返回类对象中的此公共属性的值。
print(p2.name)  # swk
print("----------------")
p1.name = 'zbj'  # 表示修改p1对象的name属性,如果p1对象没有此属性,不会去类对象中去找此属性,而是在p1对象中添加此属性,并赋值。所以不是修改的类对象中的公共属性。
print(p1.name)  # zbj 会变
print(p2.name)  # swk 不变
print("================")
Person.name = 'swj'  # 通过类对象访问name,并赋值,若类对象中没有此属性,就添加此属性。若有,则修改公共的此属性。
print(p1.name)  # zbj 不会变,因为p1对象中,已经添加了此name属性,就不会再访问类对象中的此公共属性。
print(p2.name)  # swj 会变 #p2对象中没有此属性,访问的还是类对象中的公共属性
print("*****************")
# 调用方法,对象.方法名()
# 方法调用和函数调用的区别
# 如果是函数调用,则调用时传几个参数,就会有几个实参
# 但是如果是方法调用,默认传递一个参数,所以方法中至少要定义一个形参。
p1.say_hello()  # 默认会传递当前实例对象作为第一个实参,所以对应的say_hello方法中至少定义一个形参来接收。
p2.say_hello()  # 同上
# 下面这两种调用方式等价于上面的方式
# Person.say_hello(p1)
# Person.say_hello(p2)

Person.say_hello(Person)  # 如果使用类对象调用,必须显示的传递类对象或实例对象作为第一个参数

在这里插入图片描述

使用__init__初始化属性

在类的定义中添加以下代码:

    # init 会在对象创建以后离开执行
    # init 可以用来向新创建的对象中初始化属性
    # 调用类创建对象时,类后边的所有参数都会依次传递到init()中
    def __init__(self, name):
        # print(self) #key比较下创建的实例对象的地址和这个self的是否相同,这里是相同的,self就是当前实例对象
        # 同self向新建的对象中初始化属性
        self.name = name
#那么在创建类的实例对象时,就必须传递name形参对应的实参,否则报错。
# p3 = Person() #报错
p3 = Person('swk')
基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1) 一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ... 阅读详情

相关推荐

单细胞分析(五)——使用Harmony进行数据整合和去批次

为了保证单细胞RNA测序数据的准确性和可靠性,需要对数据进行样本去批次处理。去批次的方法包括Harmony,SeuratV3等,这些方法可以有效地消除批次效应和技术噪声,并提高单细胞RNA测序数据的质量,为后续的数据分析提供更加可靠的基础。

阅读文献,记录学习笔记 3万+

【Python学习手册】类与对象详解(值得收藏的学习手册)

python专栏:【全网最强】Python系统学习手册 目录 python专栏:【全网最强】Python系统学习手册 一、类与对象 1.面向对象 2.动态类型语句 3.类的定义 4.类的成员 成员变量 成员方法 成员的动态性 5.构造方法 6.实例方法 7.动态增删改 8.类的继承 二、方法 1.类方法与静态方法 2.函数装饰器 3.一般的函数装饰器 三、成员变量 四、隐藏和封装 封装的目的 良好的封装需要从两个方面考虑: 使用property定义属性 五、类

Zincy星辰 1182

Cadence SKILL 语言实战指南:从函数列表到高效自动化脚本

本文是Cadence SKILL语言实战指南,旨在帮助芯片设计工程师从掌握核心函数列表出发,高效构建自动化脚本。文章详细解析了数据处理、数据库访问、流程控制及错误处理四类关键函数,并通过版图层批量修改与参数化单元生成两大实战场景,演示如何将函数组合成解决实际问题的自动化方案,从而显著提升Virtuoso环境下的工作效率。

beta5的博客 705

python 类与对象的详细用法

类的基本用法和实际案例,类的继承、类方法、静态方法

m0_61066945的博客 7616

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1161

Navcat最新版的激活和安装教程(全网最靠谱,最快捷的方式)

现在最新版本navcat已经出到了16.3了,并且新版navcat也支持连接redis和图标等更多样化的功能,但是比较头疼的一件事就是,只能试用14天。那么接下来小编教大家如何用最简单的方式使用最新版navcat16.

weixin_50737119的博客 2万+

【Python】类和对象的深入解析

Python 是一种面向对象的编程语言,它允许程序员通过类和对象来组织和管理代码。面向对象编程(OOP)是一种编程范式,它使用"对象"来设计软件,对象可以包含数据和代码,即属性和方法。本文将详细介绍 Python 中的类和对象,包括它们的定义、使用和一些高级特性。在 Python 中,类是创建对象的蓝图或模板。它定义了一组属性和方法,这些属性和方法可以被类的对象所共享。类本身不包含数据,它只是一个构造函数,用于创建具有初始状态的对象。在 Python 中,使用class。

m0_73596070的博客 1837

详解k-means++

一、概述 定义:k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法。它是NP-hard k-means问题的一种近似算法,它是一种避免标准k-means算法有时发现的较弱聚类的方法。 K-means与K-means++:原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚

qq_42364307的博客 3万+

Python基础——类和对象

在 Python 中,类(Class)和对象(Object)是面向对象编程的核心概念。通过类和对象,可以组织和管理代码,使得代码更加模块化、可重用和易于维护。下面详细介绍类和对象的概念、定义方法和使用方法。

十二测试录 2844

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 281

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 906

python基础:类和对象

本文介绍了面向对象编程中类和对象的核心概念。类作为对象的抽象模板,通过class关键字定义,包含属性和方法。属性分为实例属性(通过__init__初始化)和类属性(类共享)。方法包括:实例方法(操作实例属性)、类方法(@classmethod修饰,操作类属性)、静态方法(@staticmethod修饰,工具函数)以及构造方法__new__。重点讲解了魔术方法(如__add__、__str__等)如何实现对象特殊行为,以及工厂模式的应用。文章通过具体代码示例,展示了如何定义类、创建对象及使用各类方法,体现了面

2301_82065950的博客 2536

高速PCB设计中的一些常用规则

目前,高速PCB产品设计中,高速接口的应用日益普及,对于复杂的设计而言,高速走线就如同“蜘蛛网”一样密布在PCB各处,因此,在进行PCB检查及评审时,必要的高速PCB设计经验法则及规则是工程师开展工作必不可少的知识储备。

一只豌豆象的博客 3414

【Python篇】Python 类和对象:详细讲解(上篇)

类是一个蓝图或模板,用来描述某一类对象的共同特征和行为。它定义了对象应该具有什么属性(变量)和行为(方法)。举个例子,如果你要创建一个汽车管理系统,你可能会定义一个Car类,其中包括汽车的品牌、颜色、速度等属性,以及启动、停止、加速等行为。在 Python 中,类使用class关键字来定义。class Car : # 类的属性和方法定义在这里 pass是类的定义,其中Car是类的名称。pass是一个占位符,表示目前类中没有任何内容,但这是一个合法的类定义。对象是根据类创建的具体实例。

半截诗的博客~ 3108

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Python篇】Python 类和对象:详细讲解(中篇)

在编程中,类和对象是面向对象编程(OOP)的核心概念。Python 是一门支持面向对象编程的语言,这意味着你可以使用类和对象来组织代码,使其更加模块化、可维护和可扩展。类的组合通过在一个类中包含另一个类的实例,来实现功能模块化。这种方法使得类的职责更加明确,也让代码更加易于维护。方法重写:通过在子类中定义与父类同名的方法,你可以重写父类的方法,从而定制子类的行为。重写方法时,子类的方法会覆盖父类的同名方法,这是实现多态性的重要方式。多继承:Python 支持一个类同时继承多个父类的属性和方法。

半截诗的博客~ 2065

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Python学习教程】Python类和对象_python中类和对象的讲解

在上面的程序中,由于构造方法除 self 参数外,还包含 2 个参数,且这 2 个参数没有设置默认参数,因此在实例化类对象时,需要传入相应的 name 值和 add 值(self 参数是特殊参数,不需要手动传值,Python 会自动传给它值)。类变量和实例变量,简单地理解,定义在各个类方法之外(包含在类中)的变量为类变量(或者类属性),定义在类方法中的变量为实例变量(或者实例属性),二者的具体区别和用法可阅读《

2401_84139095的博客 418

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Python篇】Python 类和对象:详细讲解(下篇)

接口是一个类必须遵循的规则或约定,它定义了类应该具备哪些方法,但不提供具体的实现。在 Python 中,接口常用在规定某些类必须实现特定的方法。通过接口,不同的类可以被相同的代码调用,只要它们实现了接口的要求。# 定义一个飞行协议,规定类必须有 fly 方法pass# 定义一个 Bird 类,它实现了 fly 方法def fly(self) -> None: # 注意 -> None 表示这个方法不返回任何值# 定义一个 Airplane 类,它也实现了 fly 方法。

半截诗的博客~ 2036

python类和对象入门_Python的类和对象 入门级讲解(简单粗暴)

前言:本人是Python初学者。在学到Python的类和对象的时候,被‘高深’的概念虐得死去活来。上网提问,得到的回复几乎都是‘大神们’藏着掖着迫不得已才挤出来的只言片语;上网搜文章,长长的篇幅,那些字都认得,但是就是不知道是什么意思,并且都是反复地复制粘贴而导致文章排版极其辣眼睛。一个阴郁的冬天,我在YouTube上搜到一个视频作者John Philip Jones,发现一个关于Python类和...

weixin_39675963的博客 187

Python类和对象 入门级讲解

首先,我已经假定你已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿。 由于你没有编程经验,所以无法从学过的编程语言里通过类比去理解Python的‘类和对象’。咱们用生活中的例子来说说,建房子。 类(class): 相当于施工图纸(blueprint) 对象(object):房子(已经建造好的) 假设你手上有施工图纸(Blueprint),里面有房子的所有信...

weixin_44276372的博客 320

python类详解_python面向对象编程:python类和实例讲解

东尧爱分享这是东尧每天一篇文章的第51天东尧写文章的目标:分享东尧的经验和思考,帮你获取物质和精神两方面幸福。1什么是对象在python里面,一切皆为对象。也就是说python里的所有数据都是以对象的形式存在的,无论是简单的数字类型 还是复杂的代码模块。而一般其它编程语言所说的对象其实就是使用特定的语法创建出一种新的复杂数据类型。比如C++中用class关键词 来声明和定义一个类。然后通过类实例化...

weixin_39858245的博客 103

什么是面向对象编程 python中关于类和对象讲解 一篇文章让你明白什么是类和对象

类和对象之间的关系可以理解为类是对象的抽象,而对象是类的具体实例。类定义了对象所具有的属性和方法,而对象则是根据类的定义创建的具体实体。通过实例化类,我们可以创建多个不同的对象,每个对象都有自己的属性和方法。总结起来,类是对一组对象的抽象描述,定义了对象的共同特征和行为;而对象是类的具体实例,具有自己的属性和方法。通过类和对象的使用,我们可以更好地组织和管理程序中的数据和功能。在面向对象编程中,类(Class)和对象(Object)是两个核心概念。

k321805624的博客 1198

python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解

目录:一、组合二、类、类对象和实例对象三、到底什么是绑定四、课时39课后习题及答案***********一、组合***********现在要求定义一个类,叫水池,水池里要有乌龟和鱼。在Python里其实很简单,直接把需要的类放进去实例化就可以了,这就叫组合:#p11_3.pyclassTurtle:def __init__(self, x):self.num=xclassFish:def __in...

weixin_39792747的博客 419

python例子与讲解_Python面向对象编程中类和实例的简单讲解(附示例)

本篇文章给大家带来的内容是关于Python面向编程中类和实例的简单讲解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、preface面向对象编程OOP:object oriented programming。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。Python是一门面向对象的编程语言,通过对象实现对方法的调用。面向过程的程序设计把计算机程序...

weixin_39972151的博客 303

通俗讲解Python中类和对象之间的关系与及通过类来创建对象的具体细节

本人是初学者,此文是学习笔记 在写之前,先举一个例子,建造飞机需要实现设计图纸,图纸是模板,那根据图纸做出来的飞机就是对象,比如说做出来的战斗机,运输机,客机等等很具体的东西。模板在Python中被称为类,而根据图纸做出来的战斗机这些具体的东西再Python中就是对象。对象是需要类才能创造出来的,根据飞机图纸,我们可以做出很多飞机,这就说明根据类可以创造出多个对象。 类由三个部分组成: 类的...

Tengrui的博客 1941

python—类和对象之浅拷贝和深拷贝详细讲解

一、变量的赋值操作 定义:只是形成2个变量,实际上还是指向同一个对象 代码如下: 内存示意图: 将创建CPU类的实例对象赋值给cpu1进行储存,所以cpu1的id为0212, 然后将cpu1赋值给cpu2,cpu2的id也为0212; cpu1和cpu2指向同一个类的实例对象。 在一个类中,有一个类的实例对象,用2个变量去存储。 二、浅拷贝 定义:python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象 代码: 代码执行结果为:可以看到compute

python全栈 6592

【每日一练】python类和对象现实举例详细讲解

1.掌握类描述现实世界实物思想 2.掌握类和对象的关系 3.理解什么事面向对象

程之编的博客 1640
上一篇: python中的装饰器讲解
下一篇: mysql修改登录用户的密码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值