Python学习笔记——CSDN学习记录六:类和对象

本文详细介绍了Python中的类定义,包括关键字class、继承、属性(类级别和实例级别)、方法(公有、私有、类方法和静态方法),以及新式类和经典类的区别。还提到了内部类的定义和使用,以及魔术方法在对象生命周期中的作用,如构造函数`__init__`和析构函数`__del__`。
摘要由CSDN通过智能技术生成

在这里插入图片描述
class是关键字,bases是要继承的父类(默认继承object类)。
class documentation string是类文档字符串,一般用于类的注释说明。
class_suite是类体,主要包含属性和方法。

类、属性和方法的命名约定惯例如下:
类名:表示实例的抽象,命名时首字母大写。
属性:使用名词作为名字,比如name、age、weight等。
方法名:一般指对属性的操作,其命名规则一般采用动词+属性名称形式,如updateName、updateAge、updateWeight等。
在这里插入图片描述

Python的类分为两种:
经典类:Python2.x中类定义的默认方式,不继承object类,其内部由属性和方法组成,如:
在这里插入图片描述
新式类:Python3.x中类定义的默认方式,必须继承object方法,如:
在这里插入图片描述
· 新式类修复了经典类的一些BUG(如多重继承时的歧义等),并且提供了类方法和静态方法的支持。
·· 在Python3.x中,如果没有显示指明要继承的父类,则默认继承object类。
在这里插入图片描述
Python3.x中,无需继承时,例子中三种类的创建效果一样。自动继承object类。

新式类添加了一些内置属性和方法,如:
在这里插入图片描述

对象的创建:
类创建完之后,再创建该类的实例或对象,此过程称之为实例化。如:
在这里插入图片描述
对象标识符为people,属性为括号中的内容,方法为类中方法。
· 当一个对象被创建后,就包含标识、属性和方法这三个方面的对象特性了。其中,对象标识用于区分不同的对象,属性和方法与类中的成员变量和成员函数相对应。

类的属性:
属性分为类级别和实例级别两种。实例级别的属性值默认共享类级别的属性值,除非进行赋值操作,如:
在这里插入图片描述
该例有三个实例,分别为类实例A和对象实例obj2、obj3。
则有:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
情形1中,obj2与obj3两个对象实例共享类实例A的属性age;
情形2中,修改了对象实例obj2的属性age;
情形3中,修改了类实例A的属性age。
结果如下:
在这里插入图片描述
情形2中由于修改了对象实例obj2的属性age,其属性值和类实例A的属性值已经独立;而对象实例obj3的属性值从来没有修改过,所以还是和类实例A的属性值保持一致。
· Python语言对于属性的设置采用“类.属性=值”或“实例.属性=值”。

Python语言中的属性操作遵循三个规则:
1.属性的获取是按照从下到上的顺序来查找;
2.类和实例是两个完全独立的对象;
3.属性设置是针对实例本身进行的。

类的定义由属性和方法组成,属性是对数据的封装,方法则是对类行为的封装。

属性按使用范围分为公有属性和私有属性,使用范围取决于属性名称,如:
在这里插入图片描述

内置属性,如:
在这里插入图片描述
在这里插入图片描述

类的方法:
包括公有方法、私有方法、类方法和静态方法,如:
在这里插入图片描述
例:
在这里插入图片描述

类方法和静态方法原理上有以下区别:
1.静态方法不能使用self的方式调用;
2.静态方法调用时会预先将类中用到的属性和方法进行加载,而类方法是随意调用。因此,类方法相比静态方法具有不占资源的优势,但速度不及静态方法;
3.静态方法调用类中的属性时需要使用“类名.属性”的格式。

内部类:
类的内部定义封装,主要目的是更好抽象现实世界,如:
在这里插入图片描述
People类中又定义了Father类和Mother类两个内部类。
· 创建内部类的实例化对象可以通过外部类的实例化对象调用内部类完成,如第一种实例化方法;也可以直接使用外部类名调用内部类,如第二种实例化方法。
·· 一般情况下不使用内部类,会使程序结构复杂,但理解内部类有助于理解模块的调用。
在这里插入图片描述
内部类调用的两种方式:
1.直接使用外部类调用内部类;
2.先对外部类进行实例化,然后再实例化内部类。

魔术方法:
Python语言中,所有以双下划线 “ __ ” 包起来的方法统称为“魔术方法”,这些方法会自动调用,如 “ __ str __() ” 、“ __ init __() ” 、“ __ del __ () ” 等。
· 魔术方法中的 “ __ init __() ” 方法一般叫做构造函数,用于初始化类的内部状态和参数。若不提供,则使用默认的 “ __ init __() ” 方法。
· 魔术方法中的 “ __ del __() ” 叫做析构函数,用于释放对象占用的资源。“ __ del __() ” 函数是可选的,若不提供,则使用默认析构函数。
· 魔术方法中,有些可以实现属性访问控制的功能,如 “ __ getattr __(self,name) ” , “ __ setattr __(self,name,value) ” 方法等。
例:
在这里插入图片描述
在这里插入图片描述
如例所示,对于这些魔术方法,在创建对象时可以自动执行。当对象自动执行析构函数“A.del()”后,对象仍然存在,但是在调用“del A”,后,对象就已经被回收删除,无法再次使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用提到,Python语言官方建议使用四个空格来缩进代码,并且不使用大括号来表示代码块。这是Python的一个特点。引用中介绍了在Python中创建集合、向集合中添加和删除元素的方法,以及集合的交集、并集和差集运算的示例代码。引用展示了使用format()函数来格式化输出字符串的示例代码。 如果你希望学习Python从入门到精通的笔记,我建议你可以从以下几个方面入手: 1. 基础语法:了解Python的基本语法,如变量、数据型、运算符和表达式等。 2. 控制流程:学习条件语句和循环语句,如if语句、for循环和while循环等。 3. 函数和模块:掌握定义和调用函数的方法,以及使用模块扩展Python的功能。 4. 数据结构:学习列表、元组、字典和集合等常用的数据结构,了解它们的特点和用法。 5. 文件操作:学习如何读写文件,以及处理文件中的数据。 6. 异常处理:了解如何处理异常,使程序在出错时能够优雅地处理错误。 7. 面向对象编程:学习面向对象的思想和Python中的、对象和继承等概念。 8. 进阶主题:深入学习Python的高级特性,如迭代器、生成器、装饰器和多线程等。 以上是我给出的一些建议,希望对你学习Python有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python学习——从入门到精通(学习笔记)](https://blog.csdn.net/m0_46968642/article/details/122086059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python从入门到精通-新手学习笔记章:字典与集合](https://blog.csdn.net/weixin_45694997/article/details/107708392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaJucy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值