-
Python封装机制及达成方法
所属栏目:[语言] 日期:2022-07-07 热度:118
不光是 Python,大多数面向对象编程语言(诸如 C++、Java 等)都具备 3 个典型特征,即封装、继承和多态。其中,本节重点讲解 Python 类的封装特性,继承和多态会在后续章节给大家做详细讲解。 简单的理解封装(Encapsulation),即在设计类时,刻意地将一[详细]
-
Python继承机制及其利用
所属栏目:[语言] 日期:2022-07-07 热度:83
Python 类的封装、继承、多态 3 大特性,前面章节已经详细介绍了 Python 类的封装,本节继续讲解 Python 类的继承机制。 继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代[详细]
-
Python父类方式重写 入门必读
所属栏目:[语言] 日期:2022-07-07 热度:55
前面讲过在 Python 中,子类继承了父类,那么子类就拥有了父类所有的类属性和类方法。通常情况下,子类会在此基础上,扩展一些新的类属性和类方法。 但凡事都有例外,我们可能会遇到这样一种情况,即子类从父类继承得来的类方法中,大部分是适合子类使用的[详细]
-
Python super 函数 调用父类的创造方法
所属栏目:[语言] 日期:2022-07-07 热度:170
前面不止一次讲过,Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。 但我们知道,Python 是一门支持多继承的面向对象编程语言,如果子类继承的多个父类中包含同名[详细]
-
Python __slots__ 限制类实例动态增加属性和方法
所属栏目:[语言] 日期:2022-07-07 热度:90
通过学习《Python类变量和实例变量》一节,了解了如何动态的为单个实例对象添加属性,甚至如果必要的话,还可以为所有的类实例对象统一添加属性(通过给类添加属性)。 那么,Python 是否也允许动态地为类或实例对象添加方法呢?答案是肯定的。我们知道,[详细]
-
Python type 函数 动态创造类
所属栏目:[语言] 日期:2022-07-07 热度:76
我们知道,type() 函数属于 Python 内置函数,通常用来查看某个变量的具体类型。其实,type() 函数还有一个更高级的用法,即创建一个自定义类型(也就是创建一个类)。 type() 函数的语法格式有 2 种,分别如下: type(obj) type(name, bases, dict) 以上[详细]
-
Python MetaClass元类解说
所属栏目:[语言] 日期:2022-07-07 热度:61
MetaClass元类,本质也是一个类,但和普通类的用法不同,它可以对类内部的定义(包括类属性和类方法)进行动态的修改。可以这么说,使用元类的主要目的就是为了实现在创建类时,能够动态地改变类中定义的属性或者方法。 不要从字面上去理解元类的含义,事[详细]
-
什么叫做多态 Python多态及用法详解
所属栏目:[语言] 日期:2022-07-07 热度:186
在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要的特性,本节就带领大家详细了解什么是多态。 我们都知道,Python 是弱类型语言,其最明显的特征是在使用变量时,无需为其指定具体的数据类型。这会导致一种情况,即同一变量可能会被先[详细]
-
Python枚举类定义和运用
所属栏目:[语言] 日期:2022-07-06 热度:67
一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。 针对这种特殊的类,Python 3.4 中新增加了 Enum 枚举类。也就是说,对于这些实例[详细]
-
Python __dir__ 用法 列出对象的全部属性 方法 名
所属栏目:[语言] 日期:2022-07-06 热度:70
前面在介绍 Python 内置函数时,提到了 dir() 函数,通过此函数可以某个对象拥有的所有的属性名和方法名,该函数会返回一个包含有所有属性名和方法名的有序列表。 举个例子: class CLanguage: def __init__ (self,): self.name = C语言中文网 self.add =[详细]
-
Python __del__ 方式 销毁对象
所属栏目:[语言] 日期:2022-07-06 热度:140
我们知道,Python 通过调用 __init__() 方法构造当前类的实例化对象,而本节要学的 __del__() 方法,功能正好和 __init__() 相反,其用来销毁实例化对象。 事实上在编写程序时,如果之前创建的类实例化对象后续不再使用,最好在适当位置手动将其销毁,释放[详细]
-
Python __repr__ 方法 显现属性
所属栏目:[语言] 日期:2022-07-06 热度:192
前面章节中,我们经常会直接输出类的实例化对象,例如: class CLanguage: pass clangs = CLanguage() print(clangs) 程序运行结果为: __main__.CLanguage object at 0x000001A7275221D0 通常情况下,直接输出某个实例化对象,本意往往是想了解该对象的基[详细]
-
Python __new__ 办法详解
所属栏目:[语言] 日期:2022-07-06 热度:110
__new__() 是一种负责创建类实例的静态方法,它无需使用 staticmethod 装饰器修饰,且该方法会优先 __init__() 初始化方法被调用。 一般情况下,覆写 __new__() 的实现将会使用合适的参数调用其超类的 super().__new__(),并在返回之前修改实例。例如: cl[详细]
-
查视对象内部所有属性名和属性值组成的字典
所属栏目:[语言] 日期:2022-07-06 热度:99
在 Python 类的内部,无论是类属性还是实例属性,都是以字典的形式进行存储的,其中属性名作为键,而值作为该键对应的值。 为了方便用户查看类中包含哪些属性,Python 类提供了 __dict__ 属性。需要注意的一点是,该属性可以用类名或者类的实例对象来调用[详细]
-
Python issubclass和isinstance函数 检查类别
所属栏目:[语言] 日期:2022-07-06 热度:153
Python 提供了如下两个函数来检查类型: issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。 isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。 通过使用上面两个[详细]
-
什么是运算符重载 Python可重载运算符有什么
所属栏目:[语言] 日期:2022-07-06 热度:75
前面章节介绍了 Python 中的各个序列类型,每个类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于不同序列类型的意义是不一样的,这是怎么做到的[详细]
-
何为迭代器 Python迭代器及其用法
所属栏目:[语言] 日期:2022-07-06 热度:53
前面章节中,已经对列表(list)、元组(tuple)、字典(dict)、集合(set)这些序列式容器做了详细的介绍。值得一提的是,这些序列式容器有一个共同的特性,它们都支持使用 for 循环遍历存储的元素,都是可迭代的,因此它们又有一个别称,即迭代器。 例[详细]
-
Python生成器说明
所属栏目:[语言] 日期:2022-07-06 热度:158
前面章节中,已经详细介绍了什么是迭代器。生成器本质上也是迭代器,不过它比较特殊。 以 list 容器为例,在使用该容器迭代一组数据时,必须事先将所有数据存储到容器中,才能开始迭代;而生成器却不同,它可以实现在迭代的同时生成元素。 也就是说,对于[详细]
-
Python函数 函数定义 函数调用 用法剖析
所属栏目:[语言] 日期:2022-07-06 热度:131
Python 中函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。 除了可以直接使用的内置函数外,Python 还支持自定义函数,即将一段有规律的、可重复使[详细]
-
Python函数值传递和引用传递包括形式参数和实际参数的差别
所属栏目:[语言] 日期:2022-07-06 热度:103
通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。 在使用函数时,经常会用到形式参数(简称形参)和实际参数(简称实参),二者都叫参数,之间的区别是: 形式参数:在定义函数时,[详细]
-
何为位置参数 Python位置参数
所属栏目:[语言] 日期:2022-07-06 热度:57
位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。 实参和形参数量必须一致 在调用函数,指定的实际参数的数量,必须和形式参数的数量一致(传多传[详细]
-
Python函数关键字参数与用法
所属栏目:[语言] 日期:2022-07-06 热度:53
目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。 关键字参数是指使用形式参数的名字来确定输入的[详细]
-
Python函数默认参数设置 超级具体
所属栏目:[语言] 日期:2022-07-06 热度:81
我们知道,在调用函数时如果不指定某个参数,Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定[详细]
-
Python None 空值 及用处
所属栏目:[语言] 日期:2022-07-06 热度:73
在 Python 中,有一个特殊的常量 None(N 必须大写)。和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。 这里的空值并不代表空对象,即 None 和 []、 不同: None is [] False None is False 另外,对于所有没有 return 语句的函[详细]
-
Python return函数返回值解说
所属栏目:[语言] 日期:2022-07-06 热度:51
到目前为止,我们创建的函数都只是对传入的数据进行了处理,处理完了就结束。但实际上,在某些场景中,我们还需函数将处理的结果反馈回来,就好像主管向下级员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。 Python[详细]