前言今天我们要讲的是面向对象的核心-----类,类可以帮助我们把复杂的事情变得有条不紊,有条不紊,希望大家通过学习类,你可以改善你的编码风格,让代码更漂亮,更容易理解。一、类的用法1、什么是类?作为代码之父,可以说包装了很多有趣的函数、方法和变量。让我们尝试简单地创建一个。这将创建我们的第一个类。可以看到有一个self,其实就是引用了aa类的实例。只要每个类中的函数不是类函数或静态函数,就得加上这个self。当然你也可以把这个self换成其他的,不过python里面是这样写的,Java里面也是这样。二、类的方法1.静态方法、类方法、普通方法类中常用的方法有三种,即静态方法(staticmethod)、类方法(classmethod)和self(普通方法)。让我们来看看它们之间的区别。从这里可以看出,我们的三个方法有一个共同点,就是可以在实例中访问,也可以直接在类中访问。不同的是,访问类实例时不会执行init方法,即不进行初始化。如果使用类直接访问,可以清楚的看到它的运行轨迹。如果要在一个方法中调用其他方法,只需要:实例名。方法名或类名。方法名。2.安全方法、私有方法、安全变量、私有变量安全方法一般是为了保护类的安全,限制访问权限而建立的。一般只需要在方法前加上单下划线即可,那么如何访问私有方法呢?它与其他方法访问方法相同。安全方法:可以被外部调用,可以被其他方法访问,它允许自身的任何方法被访问,可以被外部调用,还有安全属性;私有方法:只能在私有方法内部调用,不能通过类名或者类的实例名来调用,所以可以在其他方法中通过self.ww或者cls.ww来调用,这样私有函数就是实现了。3.班级特点。相信接触过面向对象的应该都知道类的特性,封装、继承、多态等。1、封装就是把一个函数封装成一个类,这个很容易理解。2、继承是指一个类的主体结构与另一个类保持一致,就像父子的区别一样。儿子继承了父亲的所有特点,这让他少做一些重复性的工作,他有自己的一套。这叫做继承。我们举个例子来说明一下:可以看出我们实现了继承,也就是简单的给子类加上父类的名字,写一个spuer就可以继承父类的所有特性。虽然我们可以继承父类的一切,但并不意味着你可以使用一切,比如父类的私有方法或者私有属性:那么如果你想使用它们应该怎么办呢?很简单,你只需要在父类的一个可公开访问的类中添加私有方法或属性,子类就可以使用这些父类定义的私有方法或属性。当然,除了单继承之外,还有多继承,可以继承两个类的所有属性和方法,只是写法和其他编程语言有点不同。它的多重继承是递归继承,不能同时继承,即:实现了这种Multi-inheritance,可以大大简化代码量。我们可以通过一些魔术方法得到父类的名称和描述。__bases__#查看类的所有父类__base__#查看类的父类__doc__#查看类的使用文档,类中用三引号展开的部分为文档内容。我们注意到我们只需要继承一个类就可以实现多继承,这是因为之前子类已经继承了父类,所以现在必须通过子类继承父类,后面再初始化。如果有两个不相关的类,就需要写两个类名进去。并初始化。3.多态性多态性的应用使得类更加灵活。它可以共享某个方法并将其用于所有类对象。我们来看一下:这里是将一个对象传递给一个函数,使其具有类的特征函数,也就是duck类型。4.动态修改值当一个类需要创建大量实例时,可以通过魔术方法槽进行声明。这减少了内存消耗。但它只是动态修改的,没有绑定到类的实例上,类只能访问槽中设置的值。可以看出无法访问该值,因为没有该属性。再看看没有slot的时候:现在正常了。另外,子类的槽是自己和父类的槽,父类只有自己。这样大大节省了内存,但是对于Python来说似乎还不够。由于其局限性,我决定使用属性。创建属性有两种方式,我们来看看:1.装饰器直接在方法上使用装饰器非常方便。它具有三个属性:设置、获取和删除。比如大家可以看到,功能实现的很简单,省去了很多代码。2.在类中定义值为property对象的类属性,并使用property函数实现:可以看到,这样就实现了,那么现在我们写一个稍微复杂一点的,可以交互动态修改属性的。如您所见,我输入了属性名称和属性值。如果你想做的更好,可以给它加上其他的功能,比如私有方法和私有属性,访问其他类。总之,功能很多,需要自己去实践。4.小结通过类的解读,让大家明白代码的简洁和美观是多么的重要。为了我们的程序不至于这么低,请好好学习这门课。
