Python __slots__:限制类实例动态添加属性和方法

通过学习《Python类变量和实例变量》一节,了解了如何动态的为单个实例对象添加属性,甚至如果必要的话,还可以为所有的类实例对象统一添加属性(通过给类添加属性)。 那么,Python是否也允许动态地为类或实例对象添加方法...

Python super()函数:调用父类的构造方法

前面不止一次讲过,Python中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。 但我们知道,Python是一门支持多继承的面向对象编程语言,如果子...

Python父类方法重写(入门必读)

前面讲过在Python中,子类继承了父类,那么子类就拥有了父类所有的类属性和类方法。通常情况下,子类会在此基础上,扩展一些新的类属性和类方法。 但凡事都有例外,我们可能会遇到这样一种情况,即子类从父类继承得来的类方...

Python继承机制及其使用

Python类的封装、继承、多态3大特性,前面章节已经详细介绍了Python类的封装,本节继续讲解Python类的继承机制。 继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性...

Python封装机制及实现方法

不光是Python,大多数面向对象编程语言(诸如C++、Java等)都具备3个典型特征,即封装、继承和多态。其中,本节重点讲解Python类的封装特性,继承和多态会在后续章节给大家做详细讲解。 简单的理解封装(Encapsulation),即...

Python property()函数:定义属性

前面章节中,我们一直在用“类对象.属性”的方式访问类中定义的属性,其实这种做法是欠妥的,因为它破坏了类的封装原则。正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接实现对类属性的访问和...

什么是描述符,Python描述符详解

Python中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。 本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。 描述...

Python类调用实例方法

通过前面的学习,类方法大体分为3类,分别是类方法、实例方法和静态方法,其中实例方法用的是最多的。我们知道,实例方法的调用方式其实有2种,既可以采用类对象调用,也可以直接通过类名调用。 通常情况下,我们习惯使用类...

Python实例方法、静态方法和类方法详解(包含区别和用法)

和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。 和类属性的分类不同,对于初学者来说,区分这3种类方法是非常简单的,即采用@classmethod修饰的方法为类方法;采用@staticmethod...

Python类变量和实例变量(类属性和实例属性)

无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。我们可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 前面章节提到过,在类体中,根据变量...

Python self用法详解

在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将self参数作为方法的第一个参数。例如,定义一个Person类:classPerson:def__init__(self):print("正在执行构造方法")...

Python类对象的创建和使用

通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象。 创建类对象的过程,又称为类的实例化。Python类的实例化对已定义好的类进行实例化,其语法格式如下:类名(参数)定义类时,如果没...

Python __init__()类构造方法

在创建类时,我们可以手动添加一个__init__()方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。 构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python解释器都会自动调用它。Python类中,手动添...

Python class:定义类(入门必读)

前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python程序中类的使用顺序是这样的:创建(定义)类,也就是制作图纸的过程;创建类的实例对象(根据图纸...

什么是面向对象,Python面向对象(一切皆对象)

读者肯定听过Python中“一切皆对象”的说法,但可能并不了解它的具体含义,只是在学习的时候听说Python是面向对象的编程语言,本节将向大家详细介绍Python面向对象的含义。 面向对象编程是在面向过程编...

Python eval()和exec()函数详解

eval()和exec()函数都属于Python的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍。 eval()和exec()函数的功能是相似的,都可以执行一个字符串形式的Python代码(代码以字...

Python lambda表达式(匿名函数)及用法

对于定义一个简单的函数,Python还提供了另外一种方法,即使用本节介绍的lambda表达式。 lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。如果一个函数的函数体仅有1行表达式,则该函数就可以用...

什么是闭包,Python闭包(初学者必读)

前面章节中,已经对Python闭包做了初步的讲解,本节将详解介绍到底什么是闭包,以及使用闭包有哪些好处。 闭包,又称闭包函数或者闭合函数,其实和前面讲的嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值...

Python局部函数及用法(包含nonlocal关键字)

通过前面的学习我们知道,Python函数内部可以定义变量,这样就产生了局部变量,有读者可能会问,Python函数内部能定义函数吗?答案是肯定的。Python支持在函数内部定义函数,此类函数又称为局部函数。 那么,局部函数有哪些...

Python变量作用域(全局变量和局部变量)

所谓作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在for循环内部使用。 变量的作用域由变量的定义位置决定,在不...

Python return函数返回值详解

到目前为止,我们创建的函数都只是对传入的数据进行了处理,处理完了就结束。但实际上,在某些场景中,我们还需函数将处理的结果反馈回来,就好像主管向下级员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将...

Python None(空值)及用法

在Python中,有一个特殊的常量None(N必须大写)。和False不同,它不表示0,也不表示空字符串,而表示没有值,也就是空值。 这里的空值并不代表空对象,即None和[]、“”不同:>>>Noneis[] False >>>N...

Python函数默认参数设置(超级详细)

我们知道,在调用函数时如果不指定某个参数,Python解释器会抛出异常。为了解决这个问题,Python允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参...

Python函数关键字参数及用法

目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。 关键字参数是...

什么是位置参数,Python位置参数

位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。 实参和形参数量必须一致在调用函数,指定的实际参数的数量,必须和...