python基础语法-类与对象(简单实用)

超详细!Python 类 Class--详细整理 并且,Python 中也没有真正的私有属性,只有一种约定俗成的方法来模拟私有属性的效果,这也是 Python 的一种“鸭子类型”的体现。类方法可以访问类的私有属性,也可以修改。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。 阅读详情

概念

类:

类是对一群具有相同特征或行为的事物的一个统称,用来描述具有相同的属性和方法的对象的集合。
它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
是一个抽象的,没有实体的,负责创建对象的模板

实例化:

创建一个类的实例,类的具体对象。

对象:

通过类定义的数据结构实例。 对象包括两个数据成员(类变量和实例变量)和方法。

属性:

这一类对象的特征

方法:

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同, 类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的(因为是形参),也可以使用 this,但是最好还是按照约定是用 self。

私有属性:

两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。

私有方法

两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类地外部调用。
注意:其他语言定义成私有了是真正访问不到,但是python的私有只不过是进行了伪装而已。
当在类中定义私有成员时,在程序内部会将其处理成_类名 + 原有成员名称的形式。
也就是会将私有成员的名字进行一下伪装而已,如果使用处理之后的名字,还是能够进行访问的。

类变量:

类变量在整个实例化的对象中是公用的。
类变量定义在类中且在函数体之外。
类变量通常不作为实例变量使用。

实例变量:

在类的声明中,属性是用变量来表示的,
这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。

继承:

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样 一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a) "关系(例图,Dog是一个Animal)。

多继承

经典类的继承算法: 深度优先算法
新式类的继承算法: 广度优先算法

多态

子类和父类存在相同方法时,子类会覆盖父类方法,运行时总会调用子类方法–> 多态

方法重写:

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

动态属性

Python提供了如下的内建函数,用来操作对象的属性。
hasattr(obj,name):
判断obj对象中是否存在name指定的属性名,存在返回True,否则返回False。

setattr(obj,name,value):
将obj对象的name属性设置为value值。相当于执行如下的操作:obj.name = value。如果name属性存在,则覆盖,如果不存在,则为对象obj新增name属性。

getattr(obj,name):
返回obj对象的name属性值,相当于执行如下的操作:obj.name。如果name属性值存在,则返回属性值,如果属性值不存在,返回default参数值,如果属性值不存在,default参数也不存在,则产生AttributeError。

delattr(obj,name,value):
删除obj对象的name属性。相当于执行如下的操作:del obj.name.如果指定的属性不存在,则会产生AttributeError。

# 新式类,定义一个类,并且继承object类,父类、基类、超类
class Teacher(object):
    pass


# 经典类,参数列表中没有object
class Student():
    # 类变量,可以被类中所有的实例方法调用,不作为实例变量使用
    head = '天气真好'

    # 构造方法,又称构造函数,初始化类的属性
    # 当创建对象的时候, 自动执行的函数
    # 在类下面,双下划线构成私有方法,只能被自身或子类访问
    def __init__(self, name, age):
        # 实例变量(用self修饰)
        self.name = name
        self.age = age

    # 实例方法(实例函数)
    def study(self):
        print(self.name + '今年' + self.age + '岁了')

    # 这个实例方法是调用上面play的实例方法
    def to_study(self):
        self.study()

    # 类方法的装饰器
    # 在类中, @开头的称为装饰器
    # 装饰器本身也是个函数,在不影响原有功能基础上,增加新的功能
    @classmethod
    # 类方法,以cls修饰的方法,类方法的特性:单例模式
    def func1(cls):
        print('1')

    # 也是个类方法,上面有@classmethod装饰的不一样
    def func2(cls):
        # 类方法变量
        cls.value = 20
        print(cls.value)

    # 静态方法的装饰器
    # 静态方法:写在类中的普通方法,能被实例方法和类方法调用,但是不能调用实例方法和类方法
    @staticmethod
    def func():
        print('2')

    # 当前对象销毁时调用这个方法,可以执行一些清理的工作
    def __del__(self):
        print("对象销毁")

    # 使用内建函数str,format,print时调用,需要返回一个str类型的对象
    def __str__(self):
        return "Student类型对象"

    # 在使用内建函数repr时调用,需要返回一个str类型的对象
    # __str__与__repr__的区别:都返回字符串,__str__返回的是让人容易阅读的格式,__repr__通常返回
    # 的是面向Python解释器的。当需要调用__str__的场合,没有定义__str__,就是要__repr__替代
    def __repr__(self):
        return "<Student class>"

    # 当使用内建函数bytes时调用,返回字节类型
    def __bytes__(self):
        return b"byte student class"

    # 当将对象当成函数调用会执行该方法
    def __call__(self):
        print("对象当函数调用")

class Dog():
    # __new__是一个不使用@classmethod修饰的类方法,在创建对象时,首先会调用这个方法,返回当前类的对象
    # 如果该方法返回当前类的对象,那么接下来会调用__init__方法,对对象进行初始化,否则__init__方法不会得到执行
    def __new__(cls):
        print("new执行")
        # return cls()不能这么做会无限递归
        # 通过super调用__new__就不会出现无限递归
        return super().__new__(cls)

    def __init__(self):
        print('1')

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def run(self):
        print('running。。。')


class Cat(Animal):
    def __init__(self, name, age):
        super(Cat, self).__init__(name, age)

    def run(self):
        super(Cat, self).run()


# 主函数调用
if __name__ == '__main__':
    # 类直接调用实例方法
    Student('张三', '15').study()

    # 根据类创建一个对象zhangsan,创建对象的过程被称为实例化
    zhangsan = Student('张三', '15')
    # 查看对象的属性
    print(zhangsan.name)
    print(zhangsan.age)
    # 对象zhangsan可以调用类中所有的实例方法(实例函数)和实例变量
    zhangsan.to_study()

面向对象

封装

隐藏具体的实现细节,只提供给外界调用的接口。只要提供给外界的接口不变即可,底层细节改变的时候,不会对外界造成影响。

property
  1. property函数
  2. @property装饰器
super关键字
  1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象
  2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例
  3. super(B, self).func的调用并不是用于调用当前类的父类的func函数
  4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数只调用一次(如果每个类都使用super)
  5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一个父类函数被调用多次。
python语法基础汇总 python语法基础 文章目录python语法基础一、简介及运算符什么是计算机语言编译型语言和解释型语言Python的介绍Python开发环境搭建Python的交互界面Python和Sublime的整合几个概念基本语法字面量和变量变量和标识符数据类型类型检查对象(object)对象的结构变量和对象类型转换运算符(操作符)算术运算符赋值运算符关系运算符逻辑运算符条件运算符运算符的优先级二、条件判断及... 阅读详情

相关推荐

新手入门python必备文章100篇:语法基础、字符串、集合类型、异常处理、类与对象

在如今这个时间和知识都是碎片化的时代,C站根据C1-C4认证的成长路径,进行知识细化整理,形成系统化的知识图谱。 通过调研一线互联网大厂的招聘JD,小编对标C站能力认证要求,为大家整理了系列技术干货合集,助力小伙伴们顺利进大厂~ 小编根据C4认证的成长路径整理了python的相关资源,从零基础带你进入python的世界,除了语法基础,包含字符串、集合类型、异常处理和类与对象等。让小伙伴们从无到有,从浅入深的系统地学习python。 欢迎大家扫描文末二维码,一起学习~ 一、语法基础(20篇).

优快云能力认证官方博客 3185

python类

python基础

qq_44123358的博客 2万+

Python 基础 (八)Python的类与对象

类(Class)是面向对象编程中的重要概念,它用于定义对象的模板,描述了对象的属性和方法。# 类的属性# 构造函数,初始化对象的属性# 更多初始化操作# 类的方法# 方法的实现# 可以访问实例变量和类变量# 可以执行各种操作# 另一个方法的实现# 可以访问实例变量和类变量# 可以执行不同的操作:这是类的定义语句,用于创建一个名为ClassName的类。:这是类变量(或静态变量),它在类的所有实例之间共享。您可以在类中定义各种属性,它们对于该类的所有对象都是相同的。

Darwin_Bossen的博客 3322

【Python零基础】类的概念

【Python零基础】类的概念

卓越之识论道,平常之识论事,狭隘之识论人 1万+

Python:类的访问权限

⑴__类属性名或__实例属性名⑵将属性定义为私有属性后,下划线也是属性名的一部分,因此在调用的时候也是需要带上下划线的。

不怕猫的耗子A 6068

Python基础语法03:类

Python基础语法03:类3.1 面向对象编程概述3.1.1 OOP的产生3.1.2 OOP核心思想3.1.3 OOP特征3.2 类和对象3.2.1 类的创建3.2.2 对象的创建3.2.3 类的属性3.2.4 类的方法3.2.5 内部类3.2.6 魔术方法3.3 类间关系3.3.1 依赖关系3.3.2 关联关系3.3.3 继承关系3.4 总结 学习目标: 了解面向对象编程思想的由来 掌握类的声明和创建方法 掌握对象的创建和使用方法 掌握类的属性和方法定义方法 了解内部类和魔术方法的基本概念 掌握常见的

若北辰 3万+

7、Python基础之【类】

Python也是一种面向对象的编程语言,很多语法、特征同java十分类似,甚至有的地方几乎一模一样。类就是其中一个方面,比如在构造方法、实例创建、属性修改、继承等方面,二者相差无几。当然,本人目前还处于学习Python基础的阶段,可能理解尚浅。关于java的类相关知识这里不做说明,只介绍一下python中关于类的概念。

NightWish的博客 6571

从零开始:用YOLOv8-Pose实现实时人体姿态检测(附完整代码)

本文提供了一份从零开始的完整实战指南,详细介绍了如何使用YOLOv8-Pose构建实时人体姿态检测系统。内容涵盖环境搭建、数据准备、模型训练与调优,以及高性能部署和进阶应用开发,并附有可直接运行的代码示例,帮助开发者快速掌握Pose Estimation技术并将其应用于实际项目。

h6i7j8的博客 621

python基础语法复习06——类与对象

本文介绍了Python面向对象编程的核心概念,包括类与对象、属性与方法。主要内容包括:1. 类与对象的基本概念,类作为模板和对象作为实例的关系;2. 实例属性和类属性的定义与使用;3. 实例方法和类方法的定义与调用方式。文章通过学生类、银行账户等示例展示了如何定义类、创建对象,并详细说明了不同属性的访问方式以及实例方法和类方法的区别与适用场景。最后还提到了Python类可以动态修改属性的特性。

qq_73960031的博客 1274

CST实战:5分钟搞定圆极化天线轴比分析(含远场设置技巧)

本文提供了一份CST Studio Suite圆极化天线轴比分析的实战指南。文章详细讲解了轴比的概念与工程标准,并重点演示了如何正确设置远场监视器以获取Axial Ratio数据,包括关键步骤与后处理技巧。最后,通过植入式天线在生物组织环境中的案例,分析了复杂环境对轴比性能的影响及优化思路。

nokia的博客 997

温度实时检测预警系统(STC89C51RC+DS18B20)

温度实时检测预警系统

1 兴趣 2 实践 1496

python类与面向对象基础语法全集

面向对象都学会了,你的对象还会远吗?

weixin_63997211的博客 1584

DDR内存Prefetch机制详解:从DDR1到DDR4的技术演进与性能提升

本文深入解析DDR内存Prefetch机制从DDR1到DDR4的技术演进与性能提升。通过分析Prefetch技术的实现原理与Burst传输的协同机制,揭示DDR1的2n Prefetch、DDR2的4n Prefetch、DDR3的8n Prefetch以及DDR4的Bank Group架构创新如何显著提升内存带宽与系统性能。

weixin_30369041的博客 537

python:python基础语法五,类和对象

python基础语法 文章目录python基础语法什么是对象?面向对象(oop)类(class)使用类创建对象的流程类的定义创建对象的流程类的基本结构对象的创建__init__(self)方法 什么是对象? - 对象是内存中专门用来存储数据的一块区域。 - 对象中可以存放各种数据(比如:数字、布尔值、代码) - 对象由三部分组成: 1.对象的标识(id) 2.对象的类型(type)...

雷爷的博客 1489

大模型系统构建的“三驾马车”——Prompt、Context与Harness工程

在LLM应用开发的早期阶段,我们热衷于比拼“提示词”的精妙程度。那时,一个精心构造的思维链CoT就能让模型的表现提升10%以上。随着大模型从“玩具”走向“生产系统”,我们逐渐意识到:单一的 Prompt 只是起点,而非终点。 真正的工业级应用,需要构建一套三层递进的工程体系——Prompt Engineering、Context Engineering 和 Harness Engineering。

西木风落 604

AI训练加速30%!用numactl玩转多显卡绑核的隐藏技巧

本文深入探讨了如何利用Linux系统的numactl工具,通过精确的NUMA绑核策略优化多GPU AI训练性能。文章详细解析了NUMA架构对性能的影响,提供了从拓扑探查、命令实战到多卡脚本化部署的完整指南,并分享了性能验证与常见陷阱,帮助开发者实现高达30%的训练加速。

web99的专栏 448

python 类与对象的详细用法

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

m0_61066945的博客 7616

Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】

只用一个脚本做一个刮刮乐,一不小心刮出来一个女朋友!【学习娱乐一下!】

努力前行,总会成为自己心中的那道光 23万+

Python基础语法——对象与类

1.面向对象相关概念简介 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 方法:类中定义的函数。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 局部变量:定义在方法中.

weixin_48052275的博客 1325

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python基础——类和对象

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

十二测试录 2844

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python基础语法与基础爬虫整理——python基础语法Ⅰ

python基础语法与基础爬虫整理 刚刚学了点基础语法和爬虫入门,打算整理一下,比较简单,我也会通俗易懂的语言来说明(主要是我讲不出什么高大上的话!!本身语文也很差(ಥ﹏ಥ)) 基础语法,总共有13块知识点。最主要是为后边的基础爬虫作个准备工作,每一个知识点中间可能会掺杂点其他的语法,希望对你有帮助(#.#) 基础爬虫当然就是最基础的爬虫。大概就是些BeautifulSoup、json、selen...

早睡早起 3194

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python基础语法8-类与对象

在 Python 中,类是通过class关键字定义的。类包含属性(通常是变量)和方法(通常是函数)。# 类属性# 方法定义")# 创建对象(实例化)person1 = Person() # 创建一个 Person 类的实例Person:这是类的名称。greet:这是类中的一个方法。每个类方法的第一个参数通常是self,它代表类的实例。self__init____init__在 Python 中,面向对象编程通过类和对象的概念组织代码,使得程序结构更加清晰和灵活。类的定义与对象的创建。

wujianyouhun的专栏 990

Python基础——类与对象

现实生活中的属性和行为,对应类中的成员方法和成员变量。但这些属性和行为并不全对用户开放,如一部手机的运行电压,驱动信息并不能让用用户来操作,所以我们需要提供私有成员的形式来支持。在类中定义两个方法,一个用于循环输入学生信息,一个用来打印全部学生的信息,学生的信息通过列表来存储,其中学生的姓名等信息是字典的键值对形式。的子类,新增了一个通过5G拨打电话的方法,在newPhone中,依旧可以调用4G拨打电话的方法。使用构造方法循环输入三个学生的姓名,年龄,地址,使输出结果如下,最后打印全部学生的信息。

2301_80162458的博客 1123

python基础:类和对象

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

2301_82065950的博客 2536

Python基础语法篇(三):类和对象

文章目录一、类和对象介绍二、类的定义和创建实例三、类属性定义及其访问四、类中普通方法定义及调用五、私有属性六、构造方法七、析构方法八、常用内置方法九、继承十、类方法和静态方法 一、类和对象介绍 二、类的定义和创建实例 三、类属性定义及其访问 四、类中普通方法定义及调用 五、私有属性 六、构造方法 七、析构方法 八、常用内置方法 九、继承 十、类方法和静态方法 ......

qq_42871783的博客 3398
上一篇: python解题PAT甲级 1011 World Cup Betting
下一篇: python基础语法-文件操作及深浅拷贝(简单实用)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值